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
Share Link
reply
04-28 06:55
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30