2015-01-15 6 views
0

개념에 대한 도움이 필요합니다. 나는 Python을 처음 사용한다.항목 1 목록 1을 항목 1 목록 2와 항목 2 목록 2 등으로 비교하십시오. 제대로 반복 할 수 없음

중첩 된 for 루프가 필요하다는 것을 알고 있지만 목록은 두 가지 크기입니다. .dat 파일을 반복하여 .csv 파일의 항목과 일치하는지 확인하고 싶습니다. 것은 이것 같이 아주 잘 비교하지 않는 무언가이다.

for row in list1: 
    print(row) 
    for row2 in list2: 
     print(row2[1]) 
     if row == row2[1]: 
      print(“match”) 
     else: 
      print(row2[1] + ' ' + row 

)

이 같은 출력을 뱉어 :

list1-item1 
list2-item1 
list2-item1 list1-item1 
list2-item2 
list2-item2 list1-item1 
list2-item3 
list2-item3 list1-item1 

나는 그것 때문에 내가 지문을 배치 위치를 제대로 반복 아니에요 볼 수 있습니다. 두 개의 CSV 파일을 비교하려고합니다 (한 줄로 구분 된 '\ n'과 하나의 쉼표로 구분). list2에서 존재하는 list1에서 항목을 찾으려고하는데 list1의 첫 번째 항목을 반복 처리 할 수 ​​없습니다. 파이썬에서 eof가 있다면 더 쉬울 것입니다. 나는 어딘가에서 멍청한 실수를하고있는 것을 안다, 나는 단지 어디에 있는지에 관해 알 수 없다.

+0

'list1'과'list2'를 초기화하는 코드를 게시 할 수 있습니까? – dursk

+0

게시 한 코드와 질문이 제목과 일치하지 않습니다. '[1,2,3,4,5]'와'[1,3,2,4,5,7,8]'두 개의리스트를 상상해 봅시다. "색인으로 각 항목을 비교"(예 : 1 대 1 (일치), 2 대 3, 3 대 2, 4 대 4 (일치) 등 ...) 하시겠습니까? 아니면 "1 list1에서 - list2 (일치), list2에서 2 봐 - list2 (일치)에 isit 등 ... "? 다른 말로 표현하자면 - 예를 들어서 3 경기, 5 경기를보고 싶습니까? 또한, mattm에 따라 -'row2 [1]'이 매우 특별하기 때문에 목록 초기화를 볼 수 있습니까? –

답변

0

안녕하세요 귀하의 문제는 if 절 및 인쇄 절에 인덱스를 추가하는 것입니다. 인덱스를 지정할 필요가 없으며 의도하지 않은 동작으로 이어질 수 있습니다. for 루프에서 값을 가져올 때 정의 된 변수 (row, row2)의 각 반복에는 목록의 후속 항목 만 포함됩니다. 코드를 다음과 같이 변경해야합니다 :

for row in list1: 
    print(row) 
    for row2 in list2: 
     print(row2) 
     if row == row2: 
      print(“match”) 
     else: 
      print(row2 + ' ' + row