리스트을 순회하는 과정에서 데이터를 변경하다가 에러가 나는 경우는 굉장히 잦다.
특히 그 중에서 삭제는 가장 까다롭다.
이때, 리스트 표현식과 슬라이싱을 활용하여 데이터를 변경할 수 있다.
문제 예제
lost = [2,4]; reserve = [1,2,5]
for i in range(len(reserve)):
if reserve[i] in lost:
del reserve[i]
print(reserve)
'''
<Output>
Traceback (most recent call last):
File "main.py", line 3, in <module>
if reserve[i] in lost:
IndexError: list index out of range
'''
해결방법
리스트 표현식(List Comprehension) + 슬라이싱
lost = [2,4]; reserve = [1,2,5]
reserve[:] = [x for x in reserve if x not in lost]
print(reserve)
'''
<Output>
[1, 5]
'''
참고
http://blog.weirdx.io/post/45827
https://stackoverflow.com/questions/32448414/what-does-colon-at-assignment-for-list-do-in-python
'프로그래밍 언어 > Python' 카테고리의 다른 글
[Python] 문자열인지 숫자인지 판별하기 (0) | 2021.06.28 |
---|---|
[Python] 순열, 조합 구현하기 - itertools & recursion (3) | 2021.02.15 |
[Python] 파이썬 커스텀 정렬 - sort(), sorted() (0) | 2021.01.04 |
[Python] 파이썬 기본 연산 시간복잡도(Big-O) (0) | 2021.01.04 |