본문 바로가기

프로그래밍 언어/파이썬

Python 리스트 컴프리헨션, 간결하고 강력한 코드 작성법

Python 리스트 컴프리헨션, 간결하고 강력한 코드 작성법

Python에서 리스트를 생성하는 방법 중 가장 강력한 기능 중 하나는 리스트 컴프리헨션(List Comprehension)입니다. 이는 기존의 반복문을 대체하여 더 간결하고 가독성 높은 코드를 작성할 수 있도록 도와줍니다. 본 문서에서는 리스트 컴프리헨션의 개념과 다양한 활용 방법을 체계적으로 정리하겠습니다.

 

 

목차

  1. 리스트 컴프리헨션이란?
  2. 기본 문법과 구조
  3. 조건문을 활용한 리스트 컴프리헨션
  4. 중첩 리스트 컴프리헨션
  5. 딕셔너리 및 집합 컴프리헨션
  6. 리스트 컴프리헨션 vs. 일반 반복문 성능 비교
  7. 효율적인 리스트 컴프리헨션 사용법

 

1. 리스트 컴프리헨션이란?

리스트 컴프리헨션은 한 줄의 표현식으로 리스트를 생성하는 방법입니다. 기존의 for 루프를 사용한 리스트 생성보다 코드가 더 간결하고 가독성이 뛰어납니다.

기존 방식 vs. 리스트 컴프리헨션

방법 코드 예제
기존 방식 (for문)
numbers = []
for i in range(5):
    numbers.append(i * 2)
print(numbers)  # [0, 2, 4, 6, 8]
                
리스트 컴프리헨션
numbers = [i * 2 for i in range(5)]
print(numbers)  # [0, 2, 4, 6, 8]
                

 

 

 

2. 기본 문법과 구조

리스트 컴프리헨션의 기본 문법은 다음과 같습니다.

[표현식 for 요소 in 반복가능객체]
    

 

 

 

3. 조건문을 활용한 리스트 컴프리헨션

리스트 컴프리헨션에서는 if 조건을 추가하여 특정 조건을 만족하는 요소만 포함할 수 있습니다.

even_numbers = [i for i in range(10) if i % 2 == 0]
print(even_numbers)  # [0, 2, 4, 6, 8]
    

 

 

 

4. 중첩 리스트 컴프리헨션

리스트 컴프리헨션 내부에 또 다른 리스트 컴프리헨션을 사용할 수 있습니다.

matrix = [[i * j for j in range(1, 4)] for i in range(1, 4)]
print(matrix)  # [[1, 2, 3], [2, 4, 6], [3, 6, 9]]
    

 

 

 

 

5. 딕셔너리 및 집합 컴프리헨션

리스트뿐만 아니라 딕셔너리와 집합에도 컴프리헨션을 적용할 수 있습니다.

  • 딕셔너리 컴프리헨션: {key: value for item in iterable}
  • 집합 컴프리헨션: {expression for item in iterable}
squares_dict = {x: x**2 for x in range(5)}
unique_values = {x % 3 for x in range(10)}
print(squares_dict)  # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
print(unique_values)  # {0, 1, 2}
    

 

 

 

6. 리스트 컴프리헨션 vs. 일반 반복문 성능 비교

리스트 컴프리헨션은 일반적인 for 루프보다 빠르게 실행됩니다.

import timeit
print(timeit.timeit("[x**2 for x in range(1000)]", number=10000))
print(timeit.timeit("for x in range(1000): squares.append(x**2)", setup="squares=[]", number=10000))
    

 

 

 

7. 효율적인 리스트 컴프리헨션 사용법

리스트 컴프리헨션을 사용할 때는 다음을 고려해야 합니다.

  • 너무 복잡한 연산은 피하고 가독성을 유지
  • 중첩 구조가 많다면 for 루프를 고려
  • 메모리 사용이 많다면 제너레이터 표현식 활용