任意嵌套列表展平
具有不同深度級別的嵌套列表在將其減少到單一維度方面提出了挑戰。雖然有許多解決方案可以展平淺列表,但許多解決方案都在處理不規則的嵌套列表,例如 [[[1, 2, 3], [4, 5]], 6]。
遞歸方法
問題中提到的一種方法涉及遞歸:
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
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
在Pythond方便地按順序從嵌套生成器返回項目,而在Python 2中,我們明確地迭代子生成器。
以上是我們如何在 Python 中有效地展平任意巢狀清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!