Pythonで繰り返し可能な関数を1行呼び出すことは可能ですか?ブロックのない単一行関数呼び出し?
背景:
私はディレクトリのリストに単一のサブディレクトリを作成したいとします。伝統的に、私は希望のサブディレクトリ・パスのリストを構築するために、リストの内包表記を使用します。
roots
はディレクトリのリストである
subs = [os.path.join(root, "sub") for root in roots]
。私はその後、os.mkdir()
を呼び出すためにfor
ブロックを作成する必要があります:
for sub in subs:
os.mkdir(sub)
質問:
は、これを達成するために発電機を使用することが可能ですか?
私が試してみた: os.mkdir(os.path.join(root, "sub") for root in roots)
をしかし、それは発電機が受け入れられないと言ってTypeError
をスローします。
ループをリスト内包として書き直すことができました。しかし、あなたは本当にすべきではありません。あなたは新しいリストを作成しようとしていないからです。ループ内でコマンドを実行しようとしています。これは、通常のfor文が使用するものです。 – khelwood
シングルライン: 'for subs in subs:os.mkdir(sub)'。 –
@AshwiniChaudharyそれは問題を解決しません。その前に 'subs'を実行する必要がありますが、私は別のリストオブジェクトを作成しないようにしています。 – datta