如何在python中展平列表列表
我已经看到了一些关于如何展平表单列表的答案如何在python中展平列表列表,python,itertools,Python,Itertools,我已经看到了一些关于如何展平表单列表的答案 [1,[1,2],[3]] print list(itertools.chain(*[1,[1,2],[3]])) 但如何将列表展平如下: [[1],[[1,2],[3]]] print list(itertools.chain(*[[1],[[1,2],[3]]])) [1, [1, 2], [3]] 我通常用这个: import collections def flatten(l): for el in l:
[1,[1,2],[3]]
print list(itertools.chain(*[1,[1,2],[3]]))
但如何将列表展平如下:
[[1],[[1,2],[3]]]
print list(itertools.chain(*[[1],[[1,2],[3]]]))
[1, [1, 2], [3]]
我通常用这个:
import collections
def flatten(l):
for el in l:
if isinstance(el, collections.Iterable) and not isinstance(el, str):
for sub in flatten(el):
yield sub
else:
yield el
print(list(flatten([[1],[[1,2],[3]]])))
# [1, 1, 2, 3]