리스트에서 홀수만 지우는 코드를 짰습니다. 별거 아닌 것 같은데 결과가 이상해요.


nums = [1, 2, 3, 4, 5]

for n in nums:
if n % 2 == 1:
nums.remove(n)

print(nums)


홀수 1, 3, 5 가 다 빠지고 [2, 4] 가 나와야 한다고 생각했는데 실제로는


[2, 4]


어? 이번엔 맞게 나왔네요. 그런데 원래 제가 겪은 건 [1,2,3,4,5] 말고 다른 데이터에서 3 같은 값이 안 지워지고 남는 현상이었어요. 순회하면서 remove 하면 중간중간 원소를 건너뛰고 검사가 안 되는 것 같더라고요.


돌면서 지우니까 인덱스가 밀려서 그런 거 같긴 한데, 순회 도중에 원소를 지우면 왜 이렇게 하나씩 건너뛰는 건가요? 그리고 이럴 땐 어떤 식으로 걸러내는 게 맞나요?