我有元组列表列表:
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)
欢迎列表理解或任何其他想法。
答案 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]