2011-10-18 2 views
3

초보자를 여기에 파이썬.파이썬 : 중첩 목록을 병합

내가 병합 할이 개 중첩 된 목록이 있습니다

list1 = ['a', 
     (b, c), 
     (d, e), 
     (f, g, h) ] 

list2 = [(p,q), 
     (r, s), 
     (t), 
     (u, v, w) ] 

내가 찾고 있어요 출력은 다음과 같습니다

list3 = [(a, p, q), 
     (b, c, r, s), 
     (d, e, t), 
     (f, g, h, u, v, w) ] 

이는 외부 라이브러리없이 할 수 있습니까? 참고 : LEN (목록 1) = 렌 (리스트 2)의

+3

* beginner to python here. * - [튜토리얼] (http://docs.python.org/tutorial/)을 읽어야 함을 의미합니다. –

+1

안녕하세요. 나는 헛소리를 읽었다. 간단한 목록을 병합하는 방법을 알고 있습니다. 그러나 중첩 목록을 사용하는 방법을 모른다. –

+0

또한 'list1'의 첫 번째 요소는 예제의 문자열이지만 병합 후에는 개체 인 것처럼 보입니다. –

답변

12

를 사용하여 전원을 zip 기능과 list comprehensions :

list1 = [('a',), 
     ('b', 'c'), 
     ('d', 'e'), 
     ('f', 'g', 'h') ] 

list2 = [('p', 'q'), 
     ('r', 's'), 
     ('t',), 
     ('u', 'v', 'w') ] 

print [a + b for a, b in zip(list1, list2)] 
+0

감사. 나를 위해 일합니다. –

2
from operator import add 
list3 = map(add, list1, list2) 
+0

시도하지는 않았지만 도움 주셔서 감사합니다. –

+0

또는 가져 오기를 피하려면'map (tuple .__ add__, ...)'를 사용하십시오. ('map()'이 더 쉽게 읽을 수있는 목록 내포를 고집하지 않기 위해 +1.) –

0

내부리스트/튜플 내에서 순서가 중요하지 않은 경우, 당신을 수학적 집합 연산을 사용할 수 있습니다.

인쇄 [튜플 (SET (a) | 세트 (b))를 들면, 우편 번호 (X, Y)에서 B]

내용물 (a) | 세트 (B)가 반복 가능 객체 A 및 B로 변환 두 세트의 조합을 설정하고 가져옵니다. 그런 다음 출력 형식에서 원하는대로 튜플로 다시 변환됩니다.

당신이 파이썬 초심자이기 때문에,리스트 내포물을 마스터하는 것이 좋습니다. 그것은 너무 강력하고 간결합니다. 코드를 더 '파이썬'으로 만드는 것 외에도 목록 통합은 '지도'및 '필터'기능을 대체 할 수 있습니다.