Python : 리스트 컴프리헨션(List Comprehension) 완벽 가이드
파이썬의 리스트 컴프리헨션(List Comprehension)은 간결하고 우아한 방식으로 리스트를 생성하고 변환할 수 있게 해줍니다. 이 블로그에서는 리스트 컴프리헨션의 개념, 사용 사례, 다양한 구현 방법을 예제와 함께 살펴보겠습니다.
리스트 컴프리헨션이란?
리스트 컴프리헨션은 기존의 iterable(반복 가능한 객체)의 각 요소에 표현식을 적용하여 새로운 리스트를 생성하는 구문입니다. 리스트 생성과 변환을 한 줄의 코드로 결합할 수 있습니다.
문법:
[표현식 for 항목 in 반복가능객체 if 조건]
- 표현식: 각 항목에 적용할 변환식 또는 출력값.
- 항목: 반복 가능한 객체에서 추출한 요소.
- 반복가능객체: 리스트, 튜플, 문자열 등 반복 가능한 데이터.
- 조건 (선택적): 조건을 만족하는 항목만 포함.
기본 예제
1. 숫자 리스트의 제곱 계산하기
numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers]
print(squares) # 출력: [1, 4, 9, 16, 25]
2. 짝수만 필터링하기
numbers = [1, 2, 3, 4, 5]
evens = [x for x in numbers if x % 2 == 0]
print(evens) # 출력: [2, 4]
고급 활용 사례
1. 조건에 따른 표현식 사용하기
조건에 따라 다른 변환을 적용할 수도 있습니다:
numbers = [1, 2, 3, 4, 5]
result = [x**2 if x % 2 == 0 else x for x in numbers]
print(result) # 출력: [1, 4, 3, 16, 5]
2. 중첩 반복문 사용하기
pairs = [(x, y) for x in range(3) for y in range(3)]
print(pairs)
# 출력: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
3. 중첩 리스트 펼치기 (Flattening)
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flat_list = [item for sublist in matrix for item in sublist]
print(flat_list) # 출력: [1, 2, 3, 4, 5, 6, 7, 8, 9]
리스트 컴프리헨션과 일반 반복문 비교
• 기존의 반복문:
result = []
for x in range(10):
if x % 2 == 0:
result.append(x**2)
print(result)
# 출력: [0, 4, 16, 36, 64]
• 리스트 컴프리헨션:
result = [x**2 for x in range(10) if x % 2 == 0]
print(result)
# 출력: [0, 4, 16, 36, 64]
리스트 컴프리헨션은 더 간결하고 직관적입니다.
리스트 컴프리헨션 사용 시 권장 사항
1. 가독성을 유지하세요
너무 복잡한 표현식이나 중첩된 컴프리헨션은 피하고, 필요한 경우 여러 단계로 나누세요.
2. 큰 데이터셋에는 주의하세요
리스트 컴프리헨션은 전체 리스트를 메모리에 생성합니다. 데이터가 많다면 메모리를 절약할 수 있는 제너레이터 표현식을 고려하세요:
generator = (x**2 for x in range(10))
3. 복잡한 로직에는 주석을 추가하세요
로직이 복잡해질 경우 주석을 추가하거나 일반적인 반복문으로 전환하는 것이 더 나을 수 있습니다.
결론
리스트 컴프리헨션은 파이썬 개발자에게 강력한 도구로, 코드를 간결하고 명확하게 만들어줍니다. 이 블로그에서 다룬 내용을 익히고 연습하면 더 효율적이고 우아한 코드를 작성할 수 있을 것입니다.