본문 바로가기
코딩취미/Python

[파이썬] 리스트 컴프리헨션(List Comprehension)사용방법 4가지 : 코드축약/줄이기

by 브링블링 2024. 1. 18.
728x90

리스트 컴프리헨션(List Comprehension)사용방법 4가지

리스트 컴프리헨션은 파이썬의 강력하고 표현적인 기능 중 하나로, 간결한 코드로 새로운 리스트를 생성할 수 있게 해줍니다. 기본적으로, 리스트 컴프리헨션은 for 루프와 유사한 반복문을 한 줄의 코드로 축약하여 리스트를 만듭니다. 하지만, 너무 복잡하거나 긴 리스트 컴프리헨션은 코드의 가독성을 해칠 수 있으므로 적절하게 사용하는 것이 중요합니다.

 

1. 기본 구조 사용 : [expression for item in iterable] 

  • expression은 리스트에 추가될 새로운 요소입니다.
  • item은 iterable에서 반복적으로 가져오는 변수입니다.
  • iterable은 반복 가능한 객체(리스트, 튜플, 집합 등)입니다.
# 0부터 9까지의 숫자를 포함하는 리스트 생성
numbers = [x for x in range(10)]
print(numbers)

 

2. 조건문 추가: [expression for item in iterable if condition]

  • condition은 expression을 리스트에 추가하기 전에 item이 만족해야 하는 조건입니다.
  • 조건문은 선택적으로 사용될 수 있으며, 필요에 따라 여러 조건을 결합할 수 있습니다.
# 0부터 9 중 짝수만 포함하는 리스트 생성
even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers)
# 0부터 9 중 2의 배수이면서 5보다 큰 숫자 포함
filtered_numbers = [x for x in range(10) if x % 2 == 0 if x > 5]
print(filtered_numbers)

 

3. 다중 반복문: [expression for item1 in iterable1 for item2 in iterable2]

  • 두 개 이상의 반복문을 포함할 수 있으며, 중첩된 for 루프와 유사하게 작동합니다.
  • 이 구조를 사용하면, 여러 개의 iterable에서 값을 조합하여 새로운 리스트를 만들 수 있습니다.
# 두 리스트의 모든 가능한 쌍을 생성
pairs = [(x, y) for x in [1, 2, 3] for y in [3, 1, 4] if x != y]
print(pairs)

 

4. 중첩 리스트 컴프리헨션: [[expression for item in iterable] for outer_item in outer_iterable]

  • 리스트 컴프리헨션 내부에 또 다른 리스트 컴프리헨션이 포함될 수 있습니다.
  • 이는 더 복잡한 데이터 구조를 생성하는 데 사용될 수 있습니다.
# 각 숫자에 대한 0부터 4까지의 곱을 포함하는 리스트 생성
matrix = [[x * y for y in range(5)] for x in range(3)]
print(matrix)
728x90