파이썬에서 하나의 리스트에 담긴 요소들을 짝수와 홀수로 구분해 두 개의 서로 다른 리스트에 저장하고 싶을 때가 있습니다. 이럴 때는 빈 리스트 두 개를 준비한 뒤, 나머지 연산자(%)를 활용해 각 숫자가 짝수인지 홀수인지 판별하면 됩니다.
나머지 연산자는 어떤 수를 2로 나눈 나머지가 0이면 짝수, 그렇지 않으면 홀수라는 원리를 이용합니다. 아래 예제를 통해 실제 동작 과정을 살펴보겠습니다.
예제 코드
def split_list(my_list):
even_list = []
odd_list = []
for i in my_list:
if (i % 2 == 0):
even_list.append(i)
else:
odd_list.append(i)
print("짝수 리스트 :", even_list)
print("홀수 리스트 :", odd_list)
my_list = [2, 5, 13, 17, 51, 62, 73, 84, 95]
print("원본 리스트 :")
print(my_list)
split_list(my_list)실행 결과
원본 리스트 : [2, 5, 13, 17, 51, 62, 73, 84, 95] 짝수 리스트 : [2, 62, 84] 홀수 리스트 : [5, 13, 17, 51, 73, 95]
코드 설명
리스트를 매개변수로 받는
split_list함수를 정의합니다.함수 내부에는 결과를 저장할 빈 리스트 두 개(
even_list,odd_list)를 생성합니다.for반복문으로 매개변수로 받은 리스트의 모든 요소를 하나씩 순회하면서, 나머지 연산자%를 사용해 해당 값이 2로 나누어 떨어지는지 확인합니다.나머지가 0이면 짝수이므로
even_list에 추가하고, 그렇지 않으면 홀수이므로odd_list에 추가합니다.순회가 끝나면 두 리스트의 내용을 콘솔에 출력합니다.
함수 외부에서 테스트용 리스트를 정의한 뒤, 이 리스트를 인자로 전달하며 함수를 호출하면 분리된 결과가 화면에 표시됩니다.
참고: 리스트 컴프리헨션으로 더 간결하게 작성하기
위 로직은 파이썬다운 문법인 리스트 컴프리헨션(list comprehension)을 사용하면 한 줄씩으로도 표현할 수 있습니다.
my_list = [2, 5, 13, 17, 51, 62, 73, 84, 95]
even_list = [x for x in my_list if x % 2 == 0]
odd_list = [x for x in my_list if x % 2 != 0]
print("짝수 리스트 :", even_list) # [2, 62, 84]
print("홀수 리스트 :", odd_list) # [5, 13, 17, 51, 73, 95]이처럼 조건문과 반복문을 결합한 리스트 컴프리헨션은 코드를 더 짧고 읽기 쉽게 만들어 주므로, 간단한 필터링 작업에서 유용하게 활용할 수 있습니다.