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

파이썬 리스트 컴프리헨션, for 루프와 비교하며 쉽게 이해하기

리스트 컴프리헨션이란?

리스트 컴프리헨션(list comprehension)은 기존의 반복 가능한 객체(iterable)를 기반으로 새로운 리스트를 간결하게 생성할 수 있는 파이썬 문법입니다. 문자열이나 튜플을 포함한 모든 iterable을 활용할 수 있으며, 기본 구조는 표현식(expression) + for 절로 구성되고, 필요에 따라 추가적인 for 절이나 if 절을 덧붙일 수 있습니다.

for 루프에 익숙하다면 리스트 컴프리헨션을 더 쉽게 이해할 수 있습니다. 두 문법의 관계를 예제를 통해 하나씩 살펴보겠습니다.

1. 문자열로 리스트 만들기

다음은 문자열 'hello'의 각 글자를 요소로 하는 리스트를 만드는 예제입니다.

hello_letters = [letter for letter in 'hello']
print(hello_letters)

실행 결과:

['h', 'e', 'l', 'l', 'o']

문자열 'hello'는 반복 가능한 객체이며, 루프가 한 번씩 진행될 때마다 변수 letter에 새로운 글자가 할당됩니다. 위 리스트 컴프리헨션은 아래의 일반적인 for 루프 코드와 완전히 동일하게 동작합니다.

hello_letters = []
for letter in 'hello':
    hello_letters.append(letter)

즉, 여러 줄에 걸쳐 작성해야 했던 로직을 단 한 줄로 압축할 수 있는 것이 리스트 컴프리헨션의 핵심 장점입니다.

2. 조건(if) 추가하기

컴프리헨션에는 조건문을 붙여 특정 요소만 걸러낼 수도 있습니다. 예를 들어, 글자 'l'을 제외하고 싶다면 다음과 같이 작성합니다.

hello_letters = [letter for letter in 'hello' if letter != 'l']
print(hello_letters)

실행 결과:

['h', 'e', 'o']

for 루프로 표현하면 append 전에 if 문으로 조건을 검사하는 형태가 되며, 결과는 같지만 컴프리헨션이 훨씬 간결합니다.

3. 표현식으로 연산 수행하기

컴프리헨션 안의 변수에는 다양한 연산을 적용할 수 있습니다. 다음은 1부터 5까지 숫자의 제곱값으로 리스트를 만드는 예제입니다.

squares = [i ** 2 for i in range(1, 6)]
print(squares)

실행 결과:

[1, 4, 9, 16, 25]

정리

리스트 컴프리헨션은 단순히 코드를 짧게 만들어 주는 것을 넘어, 데이터 변환·필터링 과정을 한눈에 파악할 수 있게 해주는 강력하고 표현력 있는 도구입니다. 중첩 반복, 딕셔너리·집합 컴프리헨션 등 활용 사례가 매우 다양하므로, 익숙해지면 파이썬 코드의 가독성과 생산성이 크게 향상됩니다. 더 깊이 있는 내용은 DigitalOcean의 Understanding List Comprehensions in Python 3 튜토리얼을 참고해 보시기 바랍니다.