View
del
del.array[index]
배열에서 []안의 원소를 삭제한다.
위와 같은 정의로 다들 알고 있을 것이며 실제로도 그렇다
하지만 오늘 코드잇에서 파이썬 관련 공부를 하다 막히는 부분이 있었는데 범인이 바로 이 친구였다.
우선 문제는 아래와 같다.
numbers 리스트의 원소들 중 홀수는 모두 제거한다. 그 후 다시 리스트를 출력한다.
딱봐도 del을 사용해야 될거같다. 참고로 numbers의 리스트는
numbers = [1, 7, 3, 6, 5, 2, 13, 14]
내가 초기에 짠 코드는
while i < len(numbers):
if numbers[i] % 2 == 1:
del.numbers[i]
i += 1
print(numbers)
보기에는 문제가 없어 보이지만 이상하게 자꾸 홀수값이 아닌 홀수항이 삭제되는 문제가 발생했다.
내가 간과하고 있던 것은 del이 실행되면 원소가 삭제되며 배열의 크기까지 바뀐다는 것이었다.
따라서 i = 0일때는 잘 작동하지만 i = 1일때 사실 위의 함수는 2번째 항이아니라 3번째 항을 검사하고 있던 것이었다.
값들이 앞당겨지는 것이다.
이를 감안하여 새로짠 코드는
i = 0
while i < len(numbers):
if numbers[i] % 2 == 1:
del numbers[i]
else:
i += 1
print(numbers)
짝수항이 있을때만 다음항을 검사함으로써 모든항을 검사할 수 있게 되었다. 끝
'공부 > 파이썬' 카테고리의 다른 글
배열 정렬하기 (0) | 2021.05.14 |
---|---|
파이썬 배열 다루기 (0) | 2021.05.12 |
코드정리 - 피보나치 수열 (0) | 2021.05.12 |
코드정리 - 거스름돈 구하기 (0) | 2021.05.06 |
Format (0) | 2021.05.05 |
reply