Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 리스트 컴프리헨션으로 리스트의 모든 0을 끝으로 이동하는 방법

숫자로 이루어진 리스트가 주어졌을 때, 리스트 컴프리헨션(list comprehension)을 사용하면 모든 0을 리스트의 맨 뒤로 손쉽게 이동할 수 있습니다.

예를 들어 [1, 3, 0, 4, 0, 5, 6, 0, 7]이라는 리스트가 있다면, 실행 결과는 다음과 같습니다.

[1, 3, 4, 5, 6, 7, 0, 0, 0]

리스트 컴프리헨션을 활용하면 이 작업을 단 한 줄의 코드로 처리할 수 있습니다. 아래 단계를 따라 결과를 만들어 보겠습니다.

구현 단계

  • 숫자 리스트를 초기화합니다.

  • 리스트에서 0이 아닌 요소들만 추출한 리스트와, 0인 요소들만 추출한 리스트를 각각 생성한 뒤 두 리스트를 연결하고, 그 결과를 새로운 변수에 저장합니다.

  • 새로운 리스트를 출력합니다.

예제 코드

# 리스트 초기화
numbers = [1, 3, 0, 4, 0, 5, 6, 0, 7]

# 0이 아닌 요소들 + 0인 요소들을 연결하여 0을 모두 뒤로 이동
new_list = [num for num in numbers if num != 0] + [num for num in numbers if num == 0]

# 새로운 리스트 출력
print(new_list)

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

실행 결과

[1, 3, 4, 5, 6, 7, 0, 0, 0]

코드 설명

핵심 원리는 간단합니다. 첫 번째 리스트 컴프리헨션 [num for num in numbers if num != 0]은 조건문을 통해 0을 제외한 나머지 요소들을 원래 순서대로 유지하며 추출합니다. 두 번째 리스트 컴프리헨션 [num for num in numbers if num == 0]은 0만 골라내어 별도의 리스트를 만듭니다. 이 두 리스트를 + 연산자로 연결하면, 0이 아닌 요소들은 앞에 그대로 남고 모든 0은 자연스럽게 뒤로 밀려나게 됩니다.

마무리

이처럼 리스트 컴프리헨션을 활용하면 반복문 없이도 깔끔하게 0을 리스트 끝으로 이동시킬 수 있습니다. 튜토리얼에 대해 궁금한 점이 있다면 댓글로 남겨 주세요.