순회하는 동안 목록에서 제거
목록을 반복하고 요소를 제거할 때 Python의 동작은 혼란스러울 수 있습니다. 아래 코드 조각은 다음과 같습니다.
a = list(range(10)) remove = False for b in a: if remove: a.remove(b) remove = not remove print(a)
예상된 [0, 2, 4, 6, 8] 대신 [0, 2, 3, 5, 6, 8, 9]를 출력합니다.
반복적 제거 이해 동작
이 출력은 Python이 반복 중에 변경 가능한 시퀀스를 처리하는 방식의 결과입니다. 제거가 호출되면 기본 목록이 수정됩니다. 그러나 반복자는 동일하게 유지되며 수정된 목록을 계속 탐색합니다.
아래 다이어그램은 제거 프로세스를 보여줍니다.
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] <- b = 0; remove? no ^ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] <- b = 1; remove? yes ^ [0, 2, 3, 4, 5, 6, 7, 8, 9] <- b = 3; remove? no ^ [0, 2, 3, 4, 5, 6, 7, 8, 9] <- b = 4; remove? yes ^ [0, 2, 3, 5, 6, 7, 8, 9] <- b = 6; remove? no ^ [0, 2, 3, 5, 6, 7, 8, 9] <- b = 7; remove? yes ^ [0, 2, 3, 5, 6, 8, 9] <- b = 9; remove? no ^
나머지 질문 해결
위 내용은 반복 중에 Python 목록에서 요소를 제거하면 예기치 않은 결과가 생성되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!