본문 바로가기

개념

[Python] 리스트 컴프리헨션 (list comprehension)

Python에서 리스트 컴프리헨션(List Comprehension)은 리스트를 만들기 위한 간결하고 간편한 방법입니다. 다음은 간단한 리스트 컴프리헨션의 예시입니다.

 

1. 설명

numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers]
print(squares)


위의 코드에서 numbers라는 리스트가 주어졌을 때, squares라는 리스트를 만들기 위해 리스트 컴프리헨션을 사용합니다. squares의 각 요소는 numbers의 각 요소를 제곱한 값입니다.

리스트 컴프리헨션은 기본적으로 다음과 같은 구조를 가집니다.

 

[expression for variable in iterable if condition]


위의 코드에서 expression은 variable에 대한 표현식입니다. iterable은 반복 가능한 객체이며, condition은 선택적으로 사용할 수 있는 조건문입니다.

리스트 컴프리헨션은 중첩될 수 있습니다. 예를 들어, 다음과 같은 코드는 두 개의 리스트를 조합하여 튜플의 리스트를 만듭니다.

 

colors = ['red', 'green', 'blue']
sizes = ['small', 'medium', 'large']
tshirts = [(color, size) for color in colors for size in sizes]
print(tshirts)


위의 코드에서 tshirts라는 리스트는 colors와 sizes 두 개의 리스트를 조합하여 만들어졌습니다.

리스트 컴프리헨션은 루프를 사용하는 것보다 더 간결하며, 가독성이 높은 코드를 작성할 수 있도록 도와줍니다. 그러나 리스트 컴프리헨션을 사용할 때는 리스트가 큰 경우 메모리 문제가 발생할 수 있으므로, 이 점에 유의해야 합니다.

2. 장점

  • 코드의 가독성을 높여줍니다. 리스트 컴프리헨션은 루프를 사용하는 것보다 간결하게 작성할 수 있으므로, 코드를 이해하기 쉽고 유지보수하기 쉽습니다.
  • 빠른 속도로 리스트를 생성할 수 있습니다. 리스트 컴프리헨션은 내부적으로 C 언어 수준에서 최적화되어 있어, 루프를 사용하는 것보다 더 빠르게 리스트를 생성할 수 있습니다.

 

3. 단점

  • 리스트가 매우 큰 경우 메모리 문제가 발생할 수 있습니다. 리스트 컴프리헨션은 한 번에 리스트를 생성하기 때문에, 큰 리스트를 처리할 때는 메모리를 많이 사용할 수 있습니다.
  • 가독성이 낮은 경우가 있습니다. 리스트 컴프리헨션을 사용하면 코드가 간결해지지만, 표현식이 복잡하거나 중첩된 경우 가독성이 떨어질 수 있습니다.

 

4. 결론

 

따라서, 리스트 컴프리헨션은 리스트를 간결하게 생성할 수 있는 장점이 있지만, 큰 리스트를 처리하는 경우 메모리 문제

가 발생할 수 있으며, 복잡한 표현식을 사용하는 경우 가독성이 낮아질 수 있다는 단점이 있습니다. 따라서, 리스트 컴프리헨션을 사용할 때는 위의 장단점을 고려하여 적절하게 사용해야 합니다.