ホームページ >バックエンド開発 >Python チュートリアル >Python で浅いリストをフラット化する最も効率的な方法は何ですか?
Python での浅いリストのフラット化
イテラブルの浅いリストのフラット化は、Python の一般的な操作です。いくつかのアプローチがありますが、それぞれのパフォーマンスと読みやすさは異なります。
1.リスト内包表記
ネストされたリスト内包表記はリストを平坦化しているように見えますが、外側の内包表記 (例: menuitem) で使用される変数が定義されていないため、NameError が発生します。
2. reduce
reduce 関数を使用すると、リダクション操作として list.__add__ を使用して平坦化できます。ただし、このメソッドでは、Django QuerySet オブジェクトをリストに変換するために追加の list(x) 呼び出しが必要です。
3. itertools.chain
itertools.chain 関数は、リストをフラット化するためのより効率的なオプションを提供します。ジェネレーターを使用してイテラブルから要素を生成し、コピーやリストの内包表記の必要性を回避します。
コード例:
import itertools list_of_menuitems = [['image00', 'image01'], ['image10'], []] # Flatten using list comprehension (not recommended) # [image for image in menuitem for menuitem in list_of_menuitems] # Flatten using reduce # reduce(list.__add__, (list(mi) for mi in list_of_menuitems)) # Flatten using itertools.chain flattened_list = list(itertools.chain(*list_of_menuitems))
チェーンは、その理由により、浅いリストを平坦化するための推奨される方法です。パフォーマンスと使いやすさ。 Django QuerySet を含むあらゆる反復可能オブジェクトを処理できます。
以上がPython で浅いリストをフラット化する最も効率的な方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。