Stay Hungry Stay Foolish

알고리즘

[파이썬] 리스트 컴프리헨션

dev스카이 2024. 10. 21. 20:30

리스트 컴프리헨션 (List Comprehension)

파이썬에서 간결하고 효율적으로 리스트를 생성하는 구문이다. 기존 리스트의 값을 조건에 따라 변형하거나 필터링하여 새로운 리스트를 만들 때 매우 유용하다. 리스트를 생성하는 for 루프한 줄로 작성할 수 있어, 코드가 짧고 가독성이 높아진다.

 

 

기본 구문

[expression for item in iterable if condition]

 

  • expression: 리스트에 포함될 값이나 변형된 값
  • item: iterable의 각 요소를 나타냄
  • iterable: 반복 가능한 객체 (예: 리스트, 문자열, 튜플 등)
  • condition (선택적): 각 요소에 대해 적용할 조건으로, 조건이 참일 때만 요소가 포함됨

 

1️⃣ 예제 1: 기본 리스트 컴프리헨션

squares = [x * x for x in range(10)]
print(squares)

 

출력 결과

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
  • range(10)의 각 값 x에 대해 x * x를 계산하여 리스트에 추가

 

 

2️⃣ 예제 2: 조건부 리스트 컴프리헨션

even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers)

 

출력 결과

[0, 2, 4, 6, 8]
  • range(10)의 각 값 중 짝수만 리스트에 포함

 

중첩 리스트 컴프리헨션(이중 리스트)

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flat_list = [item for row in matrix for item in row]
print(flat_list)

 

출력 결과

출력: [1, 2, 3, 4, 5, 6, 7, 8, 9]
  • 중첩된 for 루프를 사용해 2차원 리스트를 1차원 리스트로 만든다.

 

📌 입력을 해야 할 때

list = [map(int, input().split() for _ in range(10)]

 

이중 리스트일 경우

list = [list(map(int, input().split()) for _ in range(10)]
  • list만 붙여주면 된다.