ホームページ > バックエンド開発 > Python チュートリアル > Python で不規則にネストされたリストを効率的に平坦化する方法?

Python で不規則にネストされたリストを効率的に平坦化する方法?

Mary-Kate Olsen
リリース: 2024-12-30 18:38:20
オリジナル
575 人が閲覧しました

How to Efficiently Flatten Irregularly Nested Lists in Python?

不規則なネストされたリストのリストを平坦化する方法

リスト構造の平坦化に関する議論はありますが、リストが次のような場合には解決策が不十分になる傾向があります。深く入れ子になっています。効果的なアプローチの 1 つを以下に示します。

再帰関数アプローチ

def flatten(x):
    result = []
    for el in x:
        if hasattr(el, "__iter__") and not isinstance(el, basestring):
            result.extend(flatten(el))
        else:
            result.append(el)
    return result
ログイン後にコピー

この関数は、各要素 (文字列を除く) が反復可能かどうかを確認し、true の場合は再帰的に平坦化します。 。反復不可能な要素は結果に追加されます。

ジェネレーター関数のアプローチ

ジェネレーター関数を使用すると、平坦化プロセスの読みやすさとパフォーマンスを向上させることができます。

Python 2 (Iterable を使用) ABC):

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 (str と bytes にタプルを使用):

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
ログイン後にコピー

このジェネレーター関数は、平坦化された要素を遅延して返し、メモリ使用量を最適化します。 。必要に応じて反復したり、リストに変換したりできます。

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

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