ホームページ >バックエンド開発 >Python チュートリアル >Python でイテレータが不規則にネストされたリストを効率的に平坦化するにはどうすればよいでしょうか?

Python でイテレータが不規則にネストされたリストを効率的に平坦化するにはどうすればよいでしょうか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-24 22:35:10653ブラウズ

How Can Iterators Efficiently Flatten Irregularly Nested Lists in Python?

反復子を使用したリストの不規則リストの平坦化

ネストされたリストを平坦化するための既存のソリューションは [[[1, 2, 3], [ のような構造では失敗すると述べました。 4、5]]、6]。このクエリは、特に反復子を使用した代替アプローチの実現可能性を調査します。

提案されたアプローチ:

提案されたソリューションには、ジェネレーター関数を活用して平坦化プロセスを簡素化し、パフォーマンスを向上させることが含まれます。 .

Python 2実装:

from collections import Iterable

def flatten(xs):
    for x in xs:
        if isinstance(x, Iterable) and not isinstance(x, basestring):
            for item in flatten(x):
                yield item
        else:
            yield x

Python 3 実装:

from collections.abc import Iterable

def flatten(xs):
    for x in xs:
        if isinstance(x, Iterable) and not isinstance(x, (str, bytes)):
            yield from flatten(x)
        else:
            yield x

反復子の利点:

  • 反復子は遅延によってメモリを節約しますフラット化されたリスト全体を保存するのではなく、項目を一度に 1 つずつ生成します。
  • イテレータは、重複する値を作成する代わりに元の要素への参照を生成することで、コピーを防ぎます。
  • イテレータは、コードをより読みやすくします。ジェネレーター関数は、ネストされたオブジェクトをナビゲートするためのロジックをカプセル化します。

結論:

反復子を利用した提案されたアプローチは、不規則なリストのリストを平坦化する効果的かつ効率的な方法を提供します。他の方法と比較して、任意のネストの深さのケースに対処し、再帰的または手動の平坦化手法の欠点を回避します。

以上がPython でイテレータが不規則にネストされたリストを効率的に平坦化するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。