파이썬의 비밀스러운 삶: 허점
발행: (2026년 1월 17일 오후 01:01 GMT+9)
2 min read
원문: Dev.to
Source: Dev.to
리스트를 순회하면서 수정하는 함정 (그리고 해결 방법)
Timothy는 화면에 보이는 센서 데이터 리스트를 바라보고 있었다.
“오류를 제거하라고 했어. 코드를 명시적으로 작성했는데도 계속 놓치고 있어.”
그는 온도 측정값 리스트를 가지고 있었으며, 0도 이하의 값은 모두 오류로 간주했다. 그의 루프는 다음과 같았다:
# Timothy's "Cleanup" Loop
temperatures = [10, -5, -2, 15, 20]
for temp in temperatures:
if temp = 0]
print(f"Cleaned List: {clean_temperatures}")
출력
Cleaned List: [10, 15, 20]
이 방법은 제자리에서 수정하는 것을 완전히 피하며, 보통 더 빠르고 명확합니다.
Margaret의 요령 정리
- 함정: 리스트를 순회하는 동안 항목을 추가하거나 제거하지 마세요.
- 증상: 항목이 건너뛰어지거나(제거 시) 무한 루프가 발생합니다(추가 시).
- 원인: 리스트 길이가 변하면 인덱스가 이동하지만, 루프 카운터는 계속 앞으로 진행합니다.
해결 방법
- 복사본을 순회:
for item in my_list[:](간단한 해결책). - 리스트 컴프리헨션:
[x for x in my_list if condition](필터링에 가장 적합). - 역순으로 순회:
for item in reversed(my_list):(고급; 복사 없이 제자리 수정이 필요할 때 유용).