単一レベルの結果を取得するためのリスト内包表記の平坦化
ネストされたデータ構造に直面したとき、プログラマーは多くの場合、それを次のように平坦化することを目指します。単一レベル。これは、各要素がリストを出力し、リストのリストが生成されるリスト内包表記を使用しているときに発生します。現在の質問はこの問題に取り組み、平坦化されたリストを取得するための解決策を求めています。
平坦化のためのネストされた反復
Python のリスト内包表記は、複雑なデータ変換のための簡潔な構文を提供します。 。平坦化を達成するには、単一のリスト内包表記内でネストされた反復を使用できます。次のコードは、このアプローチを示しています。
<code class="python">[filename for path in dirs for filename in os.listdir(path)]</code>
この例では、'dirs' はディレクトリのリストであり、ディレクトリごとに、'os.listdir(path)' はサブディレクトリのリストを返します。ネストされたリストの内包表記は両方のリストを反復処理し、サブディレクトリを蓄積してフラット化された結果を生成します。
機能的等価性
ネストされたリストの内包表記は、一連のネストされたループとして表すことができます。
<code class="python">filenames = [] for path in dirs: for filename in os.listdir(path): filenames.append(filename)</code>
どちらのアプローチでも、サブディレクトリのフラット化されたリストという同じ結果が得られます。リスト内包表記により、特に複数の反復を伴う複雑な変換に対して、よりコンパクトで読みやすい構文が提供されます。
以上がPython でネストされたリストの内包表記を平坦化する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。