可能重复:
在Python中展平(不规则)列表
我有一个列表,其中包含许多列表.这是一个例子,
[
[Obj, Obj, Obj, Obj],
[Obj],
[Obj],
[
[Obj,Obj],
[Obj,Obj,Obj]
]
]
Run Code Online (Sandbox Code Playgroud)
有没有办法将所有这些项目合并为一个列表,因此输出将是类似的
[Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj]
Run Code Online (Sandbox Code Playgroud)
是的,这是一种方法:
def flatten(lst):
for elem in lst:
if type(elem) in (tuple, list):
for i in flatten(elem):
yield i
else:
yield elem
Run Code Online (Sandbox Code Playgroud)
请注意,这会创建一个生成器,因此如果您需要一个列表,请将其包装list()
:
flattenedList = list(flatten(nestedList))
Run Code Online (Sandbox Code Playgroud)