2017-05-16 4 views
0

두 개의 매우 큰 목록 (약 50K 레코드) list1 = [['a','b','c'],['d','e','f']]list2 = [['a','r','t'],['d','e','n']]이 주어졌습니다. 내가 두 번째 목록의 하위 목록의 첫 번째 문자를 comapring 나는 새로운 오전특정 방식으로 파이썬에서리스트의 목록에 합류하십시오

이 를 파이썬 최종 목록 만 그들 중 하나를 복용하여 참여하고 있습니다 list3 = [['a','b','c','r','t'],['d','e','f','e','n']] 여기

얻을 나는

i=0 
final=[] 
    while (i<len(list1)) : 
     for row in list2 : 
      if(list1[i][0]==list2[0]) : 
       final= row + list[i][1:] 

    i+=1 
을 시도하는 방법

그러나 이것은, list comprehensionslist slicing를 사용

+1

안녕하세요 오신 것을 환영합니다 :

는 의견에 따라 편집 만 통해 어떤 일을 할 수에 if 케이스를 사용! 우리가 당신을 위해 몇 가지 코드를 작성하기를 원하는 것처럼 보입니다. 대부분의 사용자는 곤경에 처한 코더 코드를 기꺼이 만들지 만 일반적으로 포스터가 이미 문제를 해결하려고 시도했을 때만 도움이됩니다. 이러한 노력을 입증하는 좋은 방법은 지금까지 작성한 코드, 예제 입력 (있는 경우), 예상 출력 및 실제로 얻은 출력 (콘솔 출력, 역 추적 등)을 포함시키는 것입니다. 더 자세하게 제공할수록 더 많은 답변을받을 수 있습니다. [FAQ]와 [ask]를 확인하십시오. – MooingRawr

+0

당신의 시도를 게시하십시오. 우리는 당신이 그것을 고치거나 더 효율적으로하는 방법을 알려줄 것입니다. – timgeb

+0

결과의 두 목록에 각각 다섯 개의 요소 만있는 이유를 설명하십시오. – timgeb

답변

1
list1 = [['a','b','c'],['d','e','f']] 
list2 = [['a','r','t'],['d','e','n']] 

print([x+y[1:] for x,y in zip(list1,list2)]) 

작동하지 않으며, zip() 기능이 다소 빨리 수행 될 수 있습니다.

list1 = [['a','b','c'],['d','e','f']] 
list2 = [['a','r','t'],['d','e','n']] 

print([x+y[1:] for x,y in zip(list1,list2) if x[0] == y[0]]) 
+0

고맙습니다. –

+0

전에 내 시도를 게시하지 않아 죄송합니다. 하위 목록의 첫 번째 요소가 동일한 조건을 사용하여 가입하려는 경우 무엇입니까? –

+0

동일하지 않은 경우 어떻게됩니까? – MooingRawr