将列表列表解压缩到列表中

时间:2018-05-05 18:53:09

标签: python python-3.x

我有元组列表列表:

a = [[(1, 2), (3, 4), (5, 6)], [(7, 8), (9, 10)]]

如何制作一个元组列表:

b = [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]

天真的方式是:

b = []
for c in a:
    for t in c:
        b.append(t)

欢迎列表理解或任何其他想法。

3 个答案:

答案 0 :(得分:2)

使用 itertools

<强>演示:

import itertools
a = [[(1, 2), (3, 4), (5, 6)], [(7, 8), (9, 10)]]
print(list(itertools.chain(*a)))

<强>输出:

[(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]

答案 1 :(得分:1)

你不想追加,你想延长。你可以使用非常简单的循环

a = [[(1, 2), (3, 4), (5, 6)], [(7, 8), (9, 10)]]
single_level_list = []
for lst in a:
    single_level_list.extend(lst)

print(single_level_list)

>>> [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]

答案 2 :(得分:0)

此操作在某些其他语言中称为“flatten”。 在python中,以下方法可能最短。

a = [[(1, 2), (3, 4), (5, 6)], [(7, 8), (9, 10)]]
sum(a, [])
// [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]

它也适用于父列表有许多子列表的情况。

b = [[1],[2],[3],[4],[5]]
sum(b, [])
// [1, 2, 3, 4, 5]