발전을 위한 기록

[Python] 파이썬 리스트 컴프리헨션(List Comprehension) 본문

프로그래밍/파이썬

[Python] 파이썬 리스트 컴프리헨션(List Comprehension)

릴릴2 2024. 1. 23. 22:36
728x90

리스트 컴프리헨션은 반복 객체에서 조건에 따라 새 리스트를 만드는 방식입니다.

리스트 컴프리헨션은 이 두 개념을 결합한 것으로, 기존 리스트나 다른 반복 가능한(iterable) 객체를 사용하여 새로운 리스트를 간결하고 효율적으로 생성하는 방법을 의미합니다.

 

📌리스트(List) 

파이썬에서 '리스트'는 여러 값을 순서대로 저장하는 데이터 구조입니다. 배열이나 연속된 데이터를 나타내는 데 사용되며, 다양한 데이터 타입의 요소들을 포함할 수 있습니다. 파이썬의 리스트는 대괄호 [] 안에 요소들을 쉼표로 구분하여 나열합니다.

 

📌 컴프리헨션(Comprehension)

'컴프리헨션'이라는 단어는 '이해' 또는 '포괄'이라는 뜻을 가지고 있습니다. 프로그래밍에서는 이를 '특정한 집합이나 시퀀스를 생성하거나 변환하기 위해 그 구조를 이해하고 포괄하는' 과정으로 볼 수 있습니다. 즉, 기존의 데이터 구조를 바탕으로 새로운 구조를 간결하고 명확하게 생성하는 방법을 말합니다.


1. 기본 구조

[표현식 for 항목 in 반복가능객체]
  • 표현식: 새로운 리스트에 넣을 각 요소의 값을 결정합니다. 이 값을 어떻게 계산하거나 변형할지를 정의합니다.
  • 항목: 반복가능객체에서 순차적으로 가져오는 각 요소를 의미합니다.
  • 반복가능객체: 기존에 가지고 있는 리스트나 튜플, 문자열 등으로, 여기서 하나씩 요소를 꺼내어 리스트 컴프리헨션을 수행합니다.

2. 예제

2-1. 기본적인 리스트 컴프리헨션

# 주어진 리스트
original_numbers = [1, 2, 3, 4, 5]

# 리스트 컴프리헨션을 사용하여 새 리스트 생성
doubled_numbers = [number * 2 for number in original_numbers]

# 결과 출력
print(doubled_numbers)
  • 'number * 2' 가 새로운 리스트의 각 요소가 되는 값을 정의합니다.

출력결과

[2, 4, 6, 8, 10]

2-2. 조건문을 포함한 리스트 컴프리헨션

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [num for num in numbers if num % 2 == 0]
print(even_numbers)
  • numbers 리스트의 각 요소를 순회한다.
  • 각 요소가 짝수인 경우에만 그 값을 새로운 리스트 even_numbers에 추가합니다. 
  • if num % 2 == 0 부분이 조건문으로, 이 조건을 만족하는 요소만 새로운 리스트에 포함됩니다.

출력결과

[2, 4, 6, 8, 10]

2-3. 문자열 리스트에서 특정 문자를 포함하는 요소만 추출하기

words = ["apple", "banana", "cherry", "date"]
a_words = [word for word in words if 'a' in word]
print(a_words)
  • 문자열 리스트 words에서 각 요소를 순회합니다.
  • 'a'라는 문자를 포함하는 요소만을 새로운 리스트 a_words에 추가합니다.
  • 'a' in word는 각 문자열에 'a'가 포함되어 있는지를 체크하는 조건문입니다.

출력결과

['apple', 'banana', 'date']

 


2-4. 다른 리스트의 요소들을 변형하여 새로운 리스트 만들기

original = [1, 2, 3, 4, 5]
squared = [x ** 2 for x in original]
print(squared)
  • original 리스트의 각 요소를 순회합니다.
  • 요소의 제곱을 계산하여 새로운 리스트 squared에 추가합니다. 
  • 조건문 없이 단순히 리스트의 각 요소를 변형(transform)하는 경우를 보여줍니다.

출력결과

[1, 4, 9, 16, 25]

 

728x90