반응형
_list = [1,2,3,4,5]
_list라는 리스트가 있을 때 remove라는 함수를 활용하여 리스트 안에 있는 원소들을 제거하고자 하였습니다.
for x in _list:
_list.remove(x)
print(_list)
위와 같이 코드를 작성했을 때 결과 값은
[2,3,4,5]
[2,4,5]
[2,4]
가 나오게 됩니다.
예상으로는 아래와 같이 결과값이 출력되어야 했는데, 그 이유는 remove를 수행하면서 원본 리스트에 손상이 가기 때문이었습니다 !
[2,3,4,5]
[3,4,5]
[4,5]
[5]
[]
_list의 원소들이 하나씩 제거되면서, _list 자체도 바뀌게 되고, 바뀐 리스트에서 remove를 또 수행하기에 원하는 결과가 출력되지 않는 것입니다.
그렇기에 원하는 결과값을 얻기 위해서는 해당 리스트의 복사본을 통해 반복문을 수행해야 합니다 !
for x in _list[:]:
_list.remove(x)
print(_list)
반응형
'Python' 카테고리의 다른 글
[Python] Lambda를 사용한 딕셔너리 정렬 (0) | 2023.10.18 |
---|