ホームページ > バックエンド開発 > Python チュートリアル > Python で浅いリストを効率的にフラット化するにはどうすればよいですか?

Python で浅いリストを効率的にフラット化するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-20 17:56:10
オリジナル
904 人が閲覧しました

How Can I Efficiently Flatten Shallow Lists in Python?

Python で反復可能な浅いリストを平坦化する

Python では、各要素が反復可能である浅いリストを平坦化すると課題が生じる可能性があります。この記事では、パフォーマンスとコードの明瞭さを優先して、このようなリストを効果的にフラット化する複数の方法を検討します。

アプローチ:

  1. リストの理解

    ネストされたリストを使用しようとしていますネストされたループ内の未定義の変数により、内包で NameError が発生する可能性があります:

    [image for image in menuitem for menuitem in list_of_menuitems]
    ログイン後にコピー
  2. Lambda 関数による Reduce:

    ラムダによる Reduce の使用関数は簡単な機能を提供します解決策:

    reduce(list.__add__, map(lambda x: list(x), list_of_menuitems))
    ログイン後にコピー

    ただし、list(x).

  3. Itertools.chain() の使用により、このアプローチの可読性が低下する可能性があります。

    Itertools.chain() は、浅いリストを平坦化するための効率的でエレガントな方法を提供します。イテラブルを 1 つのイテラブルにシームレスに連結します。

    from itertools import chain
    list(chain(*list_of_menuitems))
    ログイン後にコピー

    このアプローチでは、冗長なコピーが回避され、同等のパフォーマンスを削減できます。

  4. 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート