Join a list of lists together into one list in Python
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Flatten (an irregular) list of lists in Python
我有一个清单,由许多清单组成。下面是一个例子,
1 2 3 4 5 6 7 8 9 | [ [Obj, Obj, Obj, Obj], [Obj], [Obj], [ [Obj,Obj], [Obj,Obj,Obj] ] ] |
是否有一种方法将所有这些项作为一个列表连接在一起,因此输出将类似于
1 | [Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj,Obj] |
是的,有一种方法可以做到:
1 2 3 4 5 6 7 | def flatten(lst): for elem in lst: if type(elem) in (tuple, list): for i in flatten(elem): yield i else: yield elem |
请注意,这将创建一个生成器,因此如果需要列表,请将其包装在
1 | flattenedList = list(flatten(nestedList)) |
从Monkeysage被偷,这里:
1 2 3 4 5 6 7 8 | def iter_flatten(iterable): it = iter(iterable) for e in it: if isinstance(e, (list, tuple)): for f in iter_flatten(e): yield f else: yield e |