我已阅读What is the fastest way to flatten arbitrarily nested lists in Python?,它为如何在Python中展平任意嵌套列表提供了很好的答案。但是,很多时候,列表嵌套到任意深度但是同质。同构嵌套列表在相同深度的所有列表元素之间具有相同的结构。
[[0, 1], [2, 3]]
[0, 1, [2, 3]]
平衡这种低深度列表的最佳方法是惯用列表理解:[inner for outer in seq for inner in outer]
对于较大的深度,这很快变得笨重,占用了许多线来表达一个简单的想法。考虑一下:[more_inner inner for outer in seq for inner in outer for more_inner in inner]
这很难理解,这是一个眼睛。
对于这种常见的特殊情况,我们能否提出一个既可读又有效的特定解决方案?
答案 0 :(得分:-5)
这是我的解决方案:
def homo_flat( seq ):
first = 0
while True:
if type( seq[ first ] ) not in [ list, tuple ]:
return seq
else:
seq = [ inner for outer in seq for inner in outer ]