중첩 된 목록이 있고 중첩 된 루프 내부의 값이 For-Loop을 통해 검색 될 때 while 루프를 종료하려고합니다. 내 문제는 영원히 반복된다는 것입니다.
listA = [
['a','b'], # 0, -5
['b','c'], # 1, -4
['c','d'], # 2, -3
['a','d'], # 3, -2
['b','e'], # 4, -1
]
endpoint = 'c'
point = ''
while point is not endpoint:
for sets in listA:
for point in sets:
print(point)
출력이 다음과 같기를 바랍니다.
a
b
b
c
Yash의 대답이 작업을 수행합니다.
또 다른 방법은 함수를 정의하고 포인트가 끝점과 같을 때 반환하는 것입니다.
listA = [
['a','b'], # 0, -5
['b','c'], # 1, -4
['c','d'], # 2, -3
['a','d'], # 3, -2
['b','e'], # 4, -1
]
endpoint = 'c'
def foo(items, endpoint):
for sets in items:
for point in sets:
print(point)
if point == endpoint:
return
foo(listA, endpoint)
그러나 왜 작동하지 않는지에 대한 질문에 대답하려면 두 번째 for
루프가 항상 완전히 실행되고 point 값은 항상 목록에서 마지막 세트의 마지막 값 이되기 때문입니다 (이 경우 'e'
). 그래서 while 루프는 항상 'e'가 'c'가 아닌지 확인하기 때문에 영원히 실행됩니다.
이전 솔루션을 유지하려면 다음을 수행하십시오.
listA = [
['a','b'], # 0, -5
['b','c'], # 1, -4
['c','d'], # 2, -3
['a','d'], # 3, -2
['b','e'], # 4, -1
]
endpoint = 'c'
point = ''
while point != endpoint:
for sets in listA:
for point in sets:
print(point)
if endpoint == point:
break
else:
continue
break
기본적으로 와 같을 for
때 중첩 된 루프 에서 제동 point
됩니다 endpoint
.
보시다시피 점과 끝 점이 두 번 같은지 ( if endpoint == point
while 루프에서 및에서) 확인하므로 while 루프가 필요하지 않습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다