リスト内包表記の結果の平坦化
リスト内包表記を使用する場合、特にリストを返す関数を使用する場合、出力としてネストされたリストが発生することがよくあります。 。これらのネストされたリストをフラットな結果に変換するには、次の手法の実装を検討してください。
リスト内包表記でのネストされた反復
Python のリスト内包表記は、ネストされたループをサポートしています。これにより、複数のコレクションを反復処理し、結果を平坦化することができます。たとえば、次のネストされたリスト内包表記は、ディレクトリのリストをサブディレクトリのフラット リストに変換します。
<code class="python">dirs = ['dir1', 'dir2', 'dir3'] filenames = [filename for path in dirs for filename in os.listdir(path)]</code>
この内包表記は、各ディレクトリ パスにアクセスして dirs を反復処理します。内部ループ内で、os.listdir を使用してそのディレクトリ内のファイル名を取得します。結果のリストには、すべてのサブディレクトリが含まれます。
リスト内包表記の連鎖
または、複数のリスト内包表記を連鎖させて平坦化することもできます。このアプローチは、適用する複数の変換がある場合に適しています。
<code class="python">directories = ['dir1', 'dir2', 'dir3'] filenames = [filename for path in directories if os.path.isdir(path) for filename in os.listdir(path)]</code>
この例では、まずディレクトリからディレクトリ以外をフィルタリングします (if 句を使用)。次に、前の例と同じ os.listdir 操作を適用します。これらの内包表記を連鎖させると、結果が平坦化されます。
ネストされた反復または連鎖内包表記を使用すると、ネストされたリスト内包表記の結果を効果的に平坦化し、コードを簡素化し、読みやすさを維持する便利な方法を提供できます。
以上がPython でネストされたリストの内包結果を平坦化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。