Input으로 주어진 리스트에서 홀수는 전부 지우고 짝수만 남은 리스트를 리턴해주세요.
- 리스트의 요소들은 전부 숫자값이고 총 요소 수는 5개 입니다.
- 예를 들어, 다음과 같은 list가👇🏻 input으로 주어졌다면:
[1, 2, 3, 4, 5]
다음과 같은 결과물👇🏻이 리턴되어야 합니다.
[2, 4]
리스트에서 홀수를 지워야 한다는 말에만 집착하다보니
for문으로 답을 출력했다.
def remove_odd_numbers(numbers): my_list = [] for n in numbers: if n%2 == 0: my_list.append(n) return my_list
근데 생각해보니까 지금은 리스트 내 요소를 지우는 법에 대해서 배워야 하는거쟈나
아직 for문으로 간결하게 할 때가 아닌데!
del, remove 메서드를 사용해서 지워보기로 했다.
원래는 이 순서대로 👇🏻 썼었는데 에러가 났다.
def remove_odd_numbers(numbers): if numbers[0]%2 != 0: del numbers[0] if numbers[1]%2 != 0: del numbers[1] if numbers[2]%2 != 0: del numbers[2] if numbers[3]%2 != 0: del numbers[3] if numbers[4]%2 != 0: del numbers[4] print(numbers) return numbers
index out of range라고 했다.
왜?
알고보니 리스트의 첫번째 인덱스 요소부터 삭제 시도를 하게되면
진행할수록 무언가 하나는 삭제가 될 텐데
하나만 지워지더라도 본래의 리스트 요소 갯수와는 달라지게 되므로
막판에 계속 out of range 에러가 뜨는 것!!
def remove_odd_numbers(numbers): if (numbers[4] % 2) != 0: del numbers[4] if (numbers[3] % 2) != 0: del numbers[3] if (numbers[2] % 2) != 0: del numbers[2] if (numbers[1] % 2) != 0: del numbers[1] if (numbers[0] % 2) != 0: del numbers[0]
print(numbers)
return numbers
암튼 요로케 깔끔하게 뒤에서부터 지워오면
그 이전 순번의 요소들을 검사할 수 있게되니까
에러가 나지 않는다 ><