[Python] (문제풀이) list에서 홀수만 제거하기

이태권 (Taekwon Lee)·2022년 5월 27일
1
post-thumbnail

list에서 홀수만 제거하기 (feat. del, remove)


❓ 문제

Assignment
Input으로 주어진 리스트에서 홀수는 전부 지우고 짝수만 남은 리스트를 리턴해주세요.

  • 리스트의 요소들은 전부 숫자값이고 총 요소 수는 5개 입니다.

example

input = [1, 2, 3, 4, 5]
결과: [2, 4]

📝 접근 방식

del 키워드를 통해 지워보자

del이라는 키워드는 listindex를 사용해 원하는 list의 요소를 제거하는 것이다. 아래처럼 원하는 인덱스를 입력하여 해당 요소를 제거할 수 있다.

numbers = [1, 2, 3]
print(numbers)			# [1, 2, 3]

del numbers[2]			# (두 번째 인덱스 제거)
print(numbers)			# [1, 2]

앞의 배열부터 지울 경우

  • 처음에 문제를 풀려고 접근했을 때는 for문으로 0부터 4번 인덱스까지 제거하려고 했으나, 그럴 경우 문제가 발생한다.
  • 앞의 것부터 지우면 그 다음 인덱스의 크기가 원래의 크기 - 1이 된다...!
  • 따라서 뒤의 것부터 지워야 한다
numbers = [1, 2, 3, 4, 5]에서
del numbers[0]
print(numbers) # [2, 3, 4, 5]

# 기존의 요소 2의 인덱스는 1
# 수정 후의 요소 2의 인덱스는 0

❗️답안

찾아 본 답안 (remove를 통해 홀수만 지우기)

키워드 remove를 통해도 지울 수 있다.
removedel과 달리 인덱스를 사용하지 않고 그 자체를 지우는 것이다.
[:]를 이용하면 다른 id 값을 가지게 되어 for문으로 메소드 과정이 진행될 동안 기존의 list를 변경시키지 않고 작업을 진행할 수 있다.

def remove_odd_numbers(numbers):
    for i in numbers[:]:
        if (i % 2 != 0):
            numbers.remove(i)
    return numbers

내 답안

def remove_odd_numbers(numbers):
  for i in range(4, -1, -1):
    if numbers[i] % 2 != 0:
      del numbers[i]
  return numbers

🔖참고 자료

profile
(Backend Dev.) One step at a time

0개의 댓글