2016-05-10 3 views
0

У меня есть следующие спискиКак получить ожидаемый результат, используя список понимание

a=[1,2,3] 
b=[4,5,6] 
c=[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] используя список понимание.

+4

У вас это было почти правильно: '[x for i in c for x in i]' – khelwood

ответ

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] 
0

Вы можете сделать это с операцией +

a = [1, 2, 3] 
b = [3, 4, 5] 
c = a + b # Equal [1, 2, 3, 3, 4, 5] 
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] 
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() позвонить вообще.

Do неsum() для этого; что приводит к квадратичному поведению, поскольку промежуточные результаты строятся для каждого элемента, суммируемого, который принимает полный цикл.