有没有一种方法可以一次展平多个列表

时间:2019-06-06 21:56:52

标签: python list

请考虑以下列表

list_1 = [[1,2],[3,4],[5,6]]
list_2 = [[7,8],[9,10],[11,12]]
list_3 = [[13,14],[15,16],[17,18]]

是否可以一次将所有列表弄平

我尝试使用

list_1 = [ y for x in list_1 for y in x]

一次只列出一个。有什么办法可以在一行代码中展平所有三个列表?

2 个答案:

答案 0 :(得分:1)

使用itertools.chain()

可以轻松完成此操作

itertools.chain(list1, list2, list3)

如果您只担心线条,那为什么不这样做呢?

list1, list2, list3 = ["A","B","C"], [1,2,3], ["E","F","G"]

答案 1 :(得分:0)

如果要整理列表的 list ,则可以使用循环:

list_1 = [[1,2],[3,4],[5,6]]
list_2 = [[7,8],[9,10],[11,12]]
list_3 = [[13,14],[15,16],[17,18]]

lists = [list_1, list_2, list_3]

def flatten(lst):
    ...

lists = [flatten(lst) for lst in lists]

您的问题是,您试图泛化无法泛化的东西:一组独立变量。忽略涉及动态变量名称更正的不建议的解决方案,您应该做的就是简单地枚举扁平化的列表:

list_1 = flatten(list_1)
list_2 = flatten(list_2)
list_3 = flatten(list_3)