Python で反復可能な浅いリストを平坦化する
Python では、各要素が反復可能である浅いリストを平坦化すると課題が生じる可能性があります。この記事では、パフォーマンスとコードの明瞭さを優先して、このようなリストを効果的にフラット化する複数の方法を検討します。
アプローチ:
リストの理解
ネストされたリストを使用しようとしていますネストされたループ内の未定義の変数により、内包で NameError が発生する可能性があります:
[image for image in menuitem for menuitem in list_of_menuitems]
Lambda 関数による Reduce:
ラムダによる Reduce の使用関数は簡単な機能を提供します解決策:
reduce(list.__add__, map(lambda x: list(x), list_of_menuitems))
ただし、list(x).
Itertools.chain() の使用により、このアプローチの可読性が低下する可能性があります。
Itertools.chain() は、浅いリストを平坦化するための効率的でエレガントな方法を提供します。イテラブルを 1 つのイテラブルにシームレスに連結します。
from itertools import chain list(chain(*list_of_menuitems))
このアプローチでは、冗長なコピーが回避され、同等のパフォーマンスを削減できます。
Itertools.chain.from_iterable ()
強化版明確にするために、 itertools.chain.from_iterable():
chain = itertools.chain.from_iterable([[1,2],[3],[5,89],[],[6]]) print(list(chain))
これは、演算子マジックを使用せずに明示的にフラット化を表現します。
結論:
Itertools.chain() とそのバリエーションは、効果的な機能と浅いリストを平坦化し、パフォーマンスとコードの明瞭さを優先するための読みやすいメソッド。アプローチを選択するときは、具体的なユースケースと読みやすさの好みを考慮してください。
以上がPython で浅いリストを効率的にフラット化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。