Python For 루프의 반복 변수 조작: 변경 사항이 후속 반복에 영향을 주지 않는 이유
Python에서는 for 루프가 반복에 자주 사용됩니다. 일련의 값에 대해. 그러나 일반적인 오해는 루프 중에 반복 변수를 수정하면 후속 반복에 영향을 미칠 수 있다는 것입니다.
문제
다음 Python 코드 조각을 고려하세요.
for i in range(0, 10): if i == 5: i += 3 print(i)
이 코드를 실행하면 다음과 같은 결과가 나올 것으로 예상할 수 있습니다. be:
0 1 2 3 4 8 9
그러나 대신 다음을 생성합니다.
0 1 2 3 4 8 6 7 8 9
설명
이 예상치 못한 동작의 이유는 다음과 같습니다. Python에서 for 루프가 작동하는 방법. C와 같은 다른 언어와 달리 Python은 루프 내부에 변수에 대한 새로운 범위를 생성하지 않습니다. 대신 반복 변수를 시퀀스의 각 값에 다시 바인딩합니다.
주어진 코드에서 반복자 i는 범위(0, 10) 시퀀스의 각 숫자에 할당됩니다. 루프 내에서 i를 수정하면 시퀀스 자체가 아닌 반복자의 현재 값만 변경됩니다. 후속 반복에서는 시퀀스의 원래 값을 계속 사용하므로 예상치 못한 출력이 표시됩니다.
해결책
반복을 수정하는 경우 원하는 동작을 얻으려면 변수가 후속 반복에 영향을 미치므로 대신 while 루프를 사용할 수 있습니다. While 루프를 사용하면 루프 자체 내에서 반복 변수를 수동으로 증가시키거나 수정할 수 있습니다.
i = 0 while i < 10: # do stuff and manipulate `i` as much as you like if i == 5: i += 3 print(i) # don't forget to increment `i` manually i += 1
이 코드는 예상되는 출력을 생성합니다.
0 1 2 3 4 8 9
위 내용은 For 루프의 반복 변수를 수정해도 Python의 후속 반복에 영향을 주지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!