2013-07-10 2 views
0

길이가 다른 두 개의 2D 목록이 있는데 부모 목록 중 하나가 짧아지면이 두 항목을 하나의 2D 목록으로 결합하려고합니다. 공간을두기위한 루프처럼.길이가 다른 두 개의 2D 목록을 결합하여 하나의 새 목록을 만듭니다.

list1 = [['abc',123],['def',456],['ghi',789]] 
list2 = [['abc',123],['def',456]] 

원하는 결과 :

list3 = [['abc',123,'abc',123],['def',456,'def,456],['ghi',789,'','']] 

나는 그들이 재귀를 계산하고 목록 인덱스 (아래)와 같은 사람들을 사용함으로써 루프와 노력했지만,이 한계를 예를 들어

가장 짧은 목록에 접근하고 나는 데이터를 잃어 버리게된다.

list3 = list1[count]+list2[count] 

답변

1

사용 itertools.izip_longest :

>>> from itertools import izip_longest 
>>> [x+y for x,y in izip_longest(list1,list2, fillvalue = ['',''])] 
[['abc', 123, 'abc', 123], ['def', 456, 'def', 456], ['ghi', 789, '', '']] 
+1

딱! 고마워요, 아직도 파이썬 모듈에 대해 배울 점이 많아서, 시간이 다되면 답을 받아 들일 것입니다. – MChandler