展平巢狀清單清單的任務可能具有挑戰性,尤其是當巢狀不規則時。所提出的問題研究了以下扁平化演算法的功效:
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 與3 的範例:
利用Python 2.6 中引入的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 中有效地展平不規則巢狀清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!