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

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

Mary-Kate Olsen
發布: 2024-12-30 18:38:20
原創
575 人瀏覽過

How to Efficiently Flatten Irregularly Nested Lists in Python?

如何展平不規則的嵌套列表列表

儘管有關於展平列表結構的討論,但當列表被嵌套得很深。以下介紹了一個有效的方法:

遞歸函數方法

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

此函數檢查每個元素是否可迭代(字串除外),如果為真則遞歸壓平它。不可迭代的元素將附加到結果中。

生成器函數方法

使用生成器函數可以增強扁平化過程的可讀性和性能:

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中文網其他相關文章!

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