如何使用列表理解获得预期结果

时间:2016-05-10 09:03:50

标签: python

我有以下列表

a=[1,2,3]
b=[4,5,6]
c=[a,b]

我需要结合列表a和b。

结果应该像[1,2,3,4,5,6]

我尝试了列表理解

[x for x in i for i in c]

输出

[3, 3, 4, 4, 5, 5]

如何使用列表推导将结果作为[1,2,3,4,5,6]

5 个答案:

答案 0 :(得分:1)

使用itertools.chain

import itertools

a=[1,2,3]
b=[4,5,6]

c = list(itertools.chain(a, b))

答案 1 :(得分:1)

你可以这样做:

a + b

如果你必须使用列表理解:

In [10]: a = [1, 2, 3]

In [11]: b = [4, 5, 6]

In [12]: c = [a, b]

In [13]: [j for i in c for j in i]
Out[13]: [1, 2, 3, 4, 5, 6]

答案 2 :(得分:1)

您正在连接,请使用+执行此操作:

c = a + b

如果要连接任意数量的列表,请使用itertools.chain.from_iterable()

from itertools import chain

list_of_lists = [a, b]
c = list(chain.from_iterable(list_of_lists))

请注意,如果你需要做的只是遍历连接结果,你可以完全离开list()

为此使用sum();这导致了二次行为,因为为每个求和的元素构建了中间结果,这需要一个完整的循环。

答案 3 :(得分:0)

你可以用+操作

来做
a = [1, 2, 3]
b = [3, 4, 5]
c = a + b # Equal [1, 2, 3, 3, 4, 5]

答案 4 :(得分:0)

以下是3种不同的方法:

>>> a=[1,2,3]
>>> b=[4,5,6]
>>> c=a+b
>>> c
[1, 2, 3, 4, 5, 6]
>>> c=[item for l in [a, b] for item in l]
>>> c
[1, 2, 3, 4, 5, 6]
>>> import itertools
>>> list(itertools.chain(*[a, b]))
[1, 2, 3, 4, 5, 6]