파이썬 리스트에서 홀수를 제외하고 짝수만 남은 리스트를 반환하는 함수를 만들기 위해 처음에는 다음과 같이 시도해봤습니다.
def remove_odd_numbers(numbers):
for i in numbers:
if (i % 2 != 0):
numbers.remove(i)
return numbers
numbers = [1, 3, 5, 8, 11]
remove_odd_numbers(numbers)
#expected: [3]
#result: [3, 8]
결과적으로 예상과 다른 결과값이 나왔는데, 이유는 numbers.remove()
를 통해 기존의 numbers
리스트를 흩트리기 때문이었습니다.
이는 다음과 같이 리스트를 복사하여 해결할 수 있었습니다.
def remove_odd_numbers(numbers):
for i in numbers[:]:
if (i % 2 != 0):
numbers.remove(i)
return numbers
numbers = [1, 3, 5, 8, 11]
remove_odd_numbers(numbers)
#expected: [3]
#result: [3]
이렇게 하면 numbers
리스트와 numbers[:]
리스트는 값은 동일(numbers == numbers[:]
)하지만 다른 id
값을 갖게 되어(numbers is not numbers[:]
) remove
메소드 작업이 진행되는 동안 기존의 리스트를 흩트리지 않고 작업을 진행할 수 있었습니다.
반응형
'TIL' 카테고리의 다른 글
파이썬 이메일, 비밀번호, URL 유효성 검사 정규 표현식 - TIL 6 (0) | 2022.01.16 |
---|---|
장고 db_table 이름 지정과 활용 방법 - TIL 5 (0) | 2022.01.12 |
데이터 유형과 데이터베이스 종류 - TIL 4 (0) | 2022.01.11 |
파이썬 함수와 파라미터 순서 - TIL 2 (0) | 2022.01.03 |
파이썬 중첩 if문 처리하기 - TIL 1 (0) | 2021.12.30 |