我正在尝试展平包含整数,元组和列表的列表。我的清单是这样的:
列表= [1,(45,54),[100,200]]
我想要这样的新列表:
NW = [1,45,54,100,200]
反正有这样做吗?我知道如何拼合列表或元组列表,但是我无法弄清楚如何一起完成所有操作。是否有任何不导入itertools的方法?谢谢!
答案 0 :(得分:2)
不导入:
new_list = []
for el in List:
if isinstance(el, list) or isinstance(el, tuple):
new_list.extend([*el])
else:
new_list.append(el)
它通过限制元素的类型来起作用。原始列表中可能还有其他类型吗?
答案 1 :(得分:0)
您可以使用collections.Iterable
来测试可迭代的元素,并将生成器理解信息馈送到itertools.chain
:
from collections import Iterable
from itertools import chain
L = [1,(45,54),[100,200]]
res = list(chain.from_iterable([i] if not isinstance(i, Iterable) else i for i in L))
[1, 45, 54, 100, 200]