Python

[Python] List Comprehension (리스트 컴프리헨션) 에 대해

s_omi 2024. 7. 16. 23:48

List Comprehension (리스트 컴프리헨션) 이란?

파이썬에서 리스트를 간결하게 생성하는 방법 중 하나이다. 리스트 컴프리헨션을 사용하면 기존 리스트를 기반으로 새로운 리스트를 만들거나 특정 조건에 맞는 요소들로 리스트를 생성할 수 있다. 리스트 컴프리헨션은 코드의 가독성을 높이고 작성하는 코드를 줄이는 데 매우 유용하다.


기본 구조

[표현식 for 항목 in 반복가능한객체 if 조건문]

 

예제

  • 기본 리스트 컴프리헨션
numbers = [1, 2, 3, 4, 5]

# 기존 리스트의 각 요소에 2를 곱한 새로운 리스트를 만듦
squared_numbers = [x * 2 for x in numbers]
print(squared_numbers)  # [2, 4, 6, 8, 10]

 

  • 조건을 포함한 리스트 컴프리헨션
# 기존 리스트에서 짝수인 요소들만을 포함하는 새로운 리스트를 만듦
even_numbers = [x for x in numbers if x % 2 == 0]
print(even_numbers)  # [2, 4]

 

  • 중첩된 반복문을 포함한 리스트 컴프리헨션
list1 = [1, 2, 3]
list2 = [4, 5, 6]

# 두 리스트의 곱을 넣은 새로운 리스트를 만듦
product_list = [x * y for x in list1 for y in list2]
print(product_list)  # [4, 5, 6, 8, 10, 12, 12, 15, 18]

 

  • 문자열 리스트 컴프리헨션
text = "Hello"

# 문자열에서 각 문자를 분리하여 새로운 리스트로 만듦
char_list = [char for char in text]
print(char_list)  # ['H', 'e', 'l', 'l', 'o']

 

  • 리스트 컴프리헨션을 사용한 2차원 리스트 생성
# 3x3 매트릭스를 생성하는 새로운 리스트를 만듦
matrix = [[j for j in range(3)] for i in range(3)]
print(matrix)  # [[0, 1, 2], [0, 1, 2], [0, 1, 2]]

 

 

 

for 루프 vs 리스트 컴프리헨션

numbers = [1, 2, 3, 4, 5]
squared_numbers = []

# for 루프 사용
for x in numbers:
    squared_numbers.append(x * 2)

# 리스트 컴프리헨션 사용
squared_numbers = [x * 2 for x in numbers]

print(squared_numbers)  # [2, 4, 6, 8, 10]

 

장 · 단점

  • 코드가 간결해지고 가독성이 높아지지만
    너무 복잡한 리스트 컴프리헨션은 오히려 가독성을 떨어뜨려 이 경우에는 기존의 for 루프를 사용하는 것이 좋다.
  • 리스트를 생성하는 방법을 더 직관적으로 이해할 수 있으나
    중첩된 리스트 컴프리헨션은 이해하기 어려울 수 있어 필요한 경우에만 사용하는 것이 좋다.

'Python' 카테고리의 다른 글

[Python] String (문자열) 다루기 (1)  (0) 2024.07.16
[Python] List (리스트) 다루기 (1)  (0) 2024.07.16