如何展平不規則的嵌套列表列表
儘管有關於展平列表結構的討論,但當列表被嵌套得很深。以下介紹了一個有效的方法:
遞歸函數方法
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中文網其他相關文章!