我有以下列表 -
[1,[2,3],4,[5,[6,7]]]
我需要让它平坦 -
[1,2,3,4,5,6,7]
要执行此操作,我目前正在使用for
循环isinstance
,循环次数为#nests - 1
。
使嵌套列表平坦的最简单方法是什么?谢谢。
可以在此处找到类似的问题,该问题涉及从嵌套列表中制作平面列表(仅限):Making a flat list out of list of lists in Python。
答案 0 :(得分:8)
def flatten(iterable):
"""Recursively iterate lists and tuples.
"""
for elm in iterable:
if isinstance(elm, (list, tuple)):
for relm in flatten(elm):
yield relm
else:
yield elm
编辑:此处的可迭代测试非常幼稚,可以通过检查是否存在__iter__
或collections.Iterable
抽象基类的实例来改进。
编辑2: @ChristopheD绝对正确,这是一个骗局,所以请转到相关问题。
答案 1 :(得分:1)
试试这个:
def flat(mlist):
result = []
for i in mlist:
if type(i) is list:
result.extend(flat(i))
else:
result.append(i)
return result