如何从由字符串,元组和列表组成的列表中制作平面列表?

时间:2018-11-02 17:20:48

标签: python python-2.7

我正在尝试展平包含整数,元组和列表的列表。我的清单是这样的:

  

列表= [1,(45,54),[100,200]]

我想要这样的新列表:

  

NW = [1,45,54,100,200]

反正有这样做吗?我知道如何拼合列表或元组列表,但是我无法弄清楚如何一起完成所有操作。是否有任何不导入itertools的方法?谢谢!

2 个答案:

答案 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]