2017-12-29 18 views
1

저는 Python을 처음 접했고 Matlab에서 새로 왔으며 여전히 배열과 달리 목록을 사용하도록 조정하고 있습니다. 나는 두 개의 목록을 가지고 있는데, 각 행의 항목이 두 번째 항목과 일치하면 첫 번째 항목부터 세 번째 항목을 만들려고합니다. 기본적으로, 나는 첫 번째 목록의 첫 번째 항목과 두 번째 목록의 항목을 비교하여 새 목록 만들기

list1 = [['name1',height1,length1],['name2',height2,length2]...['name9',height9,length9] 
list2 = ['name1','name9'] 
list3 = [] 

있고 난이리스트 2의 항목과 일치하는 첫 번째 항목이 목록 1의 행을 포함하는 목록 3을 원하는

for row in list1 
    if first element (namex) in row is in list2 
     append row to list 3 

같은 것을 원하는했습니다.

list3 = [['name1',height1,lenght1],['name9',height9,length9]] 

나는이 일을 두 가지 방법을 시도했지만, 빈 목록 3에 모두 결과 :

list3 = [item for item in list1 if item[0] in list2] 

for rows in list1: 
    if list1[0] in list2: 
     list3.append(rows) 

는 목록이 같은에서 인덱싱 할 수 없음을 알고 배열로서, 비슷한 기능을 어떻게 얻을 수 있습니까?

+0

이 원하는 출력 무엇입니까 다음과 같이 두 번째 방법이 작동하려면

, 그것은 검열 할 필요가? –

+0

게시 한 코드의 문제점은 무엇입니까? 목록 이해력으로 예상되는 결과물을 만들어냅니다. 그렇죠? –

+0

@Rawing list 3은 코드 – ah21363

답변

1

첫 번째 제안 된 방법이 저에게 잘 돌아갔습니다.

list3 = [] 
for row in list1: 
    if row[0] in list2: 
     list3.append(row) 
1

if 체크는 rows[0]이 아니고 list1[0] 이여 야합니다.

for row in list1: 
    if row[0] in list2: 
     list3.append(rows) 

이 내용을 요약하여 목록으로 만들 수 있습니다.