2016-10-30 4 views
0

각각 두 개의 목록에서 항목을 인쇄하고 싶습니다. 나는 다음과 같이 코드를 작성 :중첩 for 루프 python

for i in list_a: 
    for j in list_b: 
    print(str(i) + str(j)) 

이상적인 결과는 "A1 + B1", "A2 + B2"list_b에 등 단, 필드 위에 선이 마지막 항목이 될 것입니다. 인쇄 명세서를 더 들여 쓸 때 :

for i in list_a: 
    for j in list_b: 
     print(str(i) + str(j)) 

결과가 정확하지 않은 것 같습니다. 저는 이것이 루프 질문에 대한 기본적인 내용이라는 것을 알고 있습니다. 그러나 출력이 어떻게 다른지 매우 혼란 스럽습니다.

+0

'list_a'와'list_b'에 대한 샘플 값과 그 값을 얻을 수 있습니까? – Mureinik

+1

하지만 첫 번째 코드 블록은 구문 오류를 줄 것입니까? 좀 더 명확히 해 주시겠습니까? – idjaw

+1

'i, j for zip (list_a, list_b) : print (i + j)' – Mathias711

답변

4

지퍼 사용은 어떻습니까?

for a, b in zip(list_a, list_b): 
    print('%s + %s' % (a, b)) 

우편 번호는 print(a + b)을 수행 할 때, 당신은 단순히 CONCAT을 의미하는 함께 문자열을 추가, 또한 :, 튜플에 함께

zip([1, 2, 3], [4, 5, 6]) # [(1, 4), (2, 5), (3, 6)] 

을 예컨대을 두 개 이상의 목록을 병합합니다. 예 : a"a"이고 b"b" 인 경우 a + b"ab"이 아니고 "a + b"이 아닙니다.

1

이 코드가 작동하지 않는 이유를 아무도 설명하지 않아서 다른 답변을 추가하고 있습니다. 그게 OP가 실제로 찾고 있었던 것 같아.

귀하의 해결 방법 1 :합니다 (list_b 코드 블록에 아무것도로, 아무것도 각 단계 일어나지 않습니다)

for i in list_a: 
    #This indentation is inside 'i' loop 
    for j in list_b: 
      #This indentation is inside 'j' loop 
    print(str(i) + str(j)) 

다음 list_a를 단계별로, 모든 반복에 대해, list_b의 모든 단계별 것인가 인쇄하므로 ilist_a으로 인쇄되고 j은 항상 list_b의 마지막 항목 번호가 될 것입니다.

가 비어있는 코드 블록과 컴파일러가 일 가능성 IndentationError

귀하의 솔루션이와 그를 데리러로이 코드는 어차피 실행되지는 않지만 :

for i in list_a: 
    for j in list_b: 
     print(str(i) + str(j)) 

통해 단계 것 list_a의 모든 요소와 각 요소에 대해 list_b을 단계적으로 따라 가면 A1B1, A1B2, A1B3 등으로 끝납니다.

바람직한 해결책

용액 this answer가 @Pavlins 않음 본질적으로 동일한 솔루션을 좋게 커버 동일한 속도로 동시에 두리스트를 단계이다.