首頁 > 後端開發 > Python教學 > Python 中迭代器如何有效地展平不規則巢狀清單?

Python 中迭代器如何有效地展平不規則巢狀清單?

Patricia Arquette
發布: 2024-12-24 22:35:10
原創
640 人瀏覽過

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
登入後複製

迭代器的優點:

  • 迭代器透過一次懶惰地產生一個項目來節省記憶體,而不是儲存整個展平清單。
  • 迭代器透過產生對原始元素的引用而不是建立重複值來防止複製。
  • 迭代器使程式碼更清晰,因為生成器函數封裝了導航巢狀的邏輯

結論:

所提出的利用迭代器的方法提供了一種有效且有效率的方法來展平不規則清單清單。與其他方法相比,它解決了任意嵌套深度的情況,並避免了遞歸或手動展平技術的缺點。

以上是Python 中迭代器如何有效地展平不規則巢狀清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板