본문 바로가기
파이썬

파이썬에서 중첩 (이중) 루프 끊기

by º기록 2020. 12. 8.
반응형

파이썬에서 이중 루프를 끊기 위해 다음 방법을 사용합니다.

for word1 in buf1:
    find = False
    for word2 in buf2:
        ...
        if res == res1:
            print "BINGO " + word1 + ":" + word2
            find = True
    if find:
        break

이중 루프를 끊는 더 좋은 방법이 있습니까?

 

해결 방법

 

원하는 바가 아닐 수 있지만 일반적으로 find True 로 설정 한 후 break 를 원할 것입니다.

for word1 in buf1: 
    find = False 
    for word2 in buf2: 
        ... 
        if res == res1: 
            print "BINGO " + word1 + ":" + word2 
            find = True 
            break             # <-- break here too
    if find: 
        break 

또 다른 방법은 생성기 표현식을 사용하여 for 를 단일 루프로 스쿼시하는 것입니다.

for word1, word2 in ((w1, w2) for w1 in buf1 for w2 in buf2):
    ... 
    if res == res1: 
        print "BINGO " + word1 + ":" + word2
        break 

itertools.product 사용을 고려할 수도 있습니다.

from itertools import product
for word1, word2 in product(buf1, buf2):
    ... 
    if res == res1: 
        print "BINGO " + word1 + ":" + word2
        break 

 

참조 페이지 https://stackoverflow.com/questions/2597104

 

 

반응형

댓글