2013-08-07 2 views
1

python에서 어떻게 목록 이해력을 사용하여 3 개의 목록을 연결합니까?어떻게 목록 이해력을 사용하여 3 개의 목록을 연결합니까?

list1 = [1,2,3,4] 
    list2 = [5,6,7,8] 
    list3 = [9,10,11,12] 

원치 :

은 가지고

allList = [1,2,3,4,5,6,7,8,9,10,11,12] 

내가 지능형리스트를 사용했지만, 아직 그들에게 아주 좋은 아니에요. 이 내가 시도 무엇 :

allList = [n for n in list1 for n in list2 for n in list3 ] 

은 분명 나쁜 생각이었다 렌 (목록 1) * 렌 (리스트 2) * 값의 렌 (목록 3) 가치를 얻었다. 죄송합니다. 그래서 나는이 시도 :

allList = [n for n in list1, list2, list3] 

을하지만 준 나 allList = [목록 1, 목록 2 목록 3] (목록 3에서는) 당신이 X 같이 (+ 연산자를 사용하여 연결할 수 있습니다 알고

= list1 + list2 + list3) 그러나 간단한 목록 이해력을 사용하여 이것을 어떻게합니까?

여기에 비슷한 질문이 있습니다 : Concatenate 3 lists of words,하지만 그건 C#입니다.

+0

그렇게하는 것의 이점이 보이지 않습니다. S – jabaldonedo

+0

목록 이해력을 사용하면 어떤 이점이 있다고 생각합니까? 나는 네가하는 일에 대해 오해를해야한다고 생각한다. –

답변

9

allList = [x for x in list1 + list2 + list3]의 할 수 있습니다. 대신 중간 목록 list1 + list2 다음 다른 중간 목록 list1 + list2 + list3을 만드는 그런 식으로, 당신은 단지 중간의와 최종 목록을 작성 :

allList = [x for x in itertools.chain(list1, list2, list3)] 

그러나이 같은 빈리스트 통합은 매우 바보입니다; 단지 목록에 임의의 반복자를 켭니다 list 함수를 사용

allList = list(itertools.chain(list1, list2, list3)) 

또는 더 나은 ... 당신이 위에 루프입니다 필요로하는 유일한 이유는, 단지 반복자로 떠날 경우 :

for thing in itertools.chain(list1, list2, list3): 
    do_stuff(thing) 

우리가 여기있는 동안, "similar question" you linked to은 실제로 매우 다른, 더 복잡한 질문입니다.

print('\n'.join(map(' '.join, itertools.product(list1, list2, list3)))) 
+0

+1 'list (something)'에 +1; 놀란이 더 자주 사용되지 않습니다. –

0

당신은 더 나은 솔루션 대신 추가의 itertools.chain을 사용하는 것입니다 allList = list1 + list2 + list3 대신

3
다음

있습니다 : 당신이 그 질문에 의해 지정된 형식으로 인쇄 할 경우,

itertools.product(list1, list2, list3) 

또는 : itertools 정말 멋지다 때문에 그러나, 아직 파이썬에서 한 줄의 몇 가지 옵션 : 이해와

>>> sum([list1, list2, list3], []) 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 

>>> list1 + list2 + list3 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 

: (정말 필요가 없습니다)

관련 문제