1. 리스트 컴프리헨션(List Comprension)이란?
리스트 컴프리헨션은 직관적으로 리스트를 생성하는 방법입니다. 대괄호 "[", "]"로 감싸고 내부에 for문과 if 문을 사용하여 반복하며 조건에 만족하는 것만 리스트로 생성할 수 있습니다.
그냥 리스트를 생성하고 for문과 if문을 사용하면 되지 굳이 리스트 컴프리헨션을 사용할 필요가 있을지 궁금할 수 있습니다. 리스트 컴프리헨션을 사용하는 큰 이유는 직관적이고, 여러줄 쓸걸 한줄에 만들어 주기 때문입니다. 심지어 속도도 더 빠릅니다.
기본 구조
리스트 컴프리헨션의 기본 구조는 다음과 같습니다.
new_list = [expression for item in iterable if condition]
- expression: 각 요소에 적용할 표현식
- item: iterable의 각 요소
- iterable: 반복 가능한 객체 (리스트, 튜플, range 등)
- condition (선택 사항): 요소를 포함할 조건
리스트 컴프리헨션, 왜 써야 할까요?
- 간결한 코드: 여러 줄의 반복문을 한 줄로 줄여 코드를 간결하게 작성할 수 있습니다.
- 향상된 성능: 일반적인 반복문보다 실행 속도가 빠릅니다.
- 높은 가독성: 코드의 의도를 명확하게 전달하여 가독성을 높입니다.
리스트 컴프리헨션 활용 예시
- 리스트의 각 요소를 제곱한 값으로 새로운 리스트 생성
numbers = [1, 2, 3, 4, 5]
squared_numbers = [x**2 for x in numbers]
print(squared_numbers) # Output: [1, 4, 9, 16, 25] - 리스트에서 짝수만 필터링하여 새로운 리스트 생성
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = [x for x in numbers if x % 2 == 0]
print(even_numbers) # Output: [2, 4, 6] - 문자열 리스트에서 각 문자열의 첫 글자만 추출하여 새로운 리스트 생성
words = ["apple", "banana", "cherry", "date"]
first_letters = [word[0] for word in words]
print(first_letters) # Output: ['a', 'b', 'c', 'd']
중첩 리스트 컴프리헨션
리스트 컴프리헨션은 여러 개의 반복문을 사용하여 다차원 리스트를 생성하는 데에도 활용할 수 있습니다.
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [x for row in matrix for x in row]
print(flattened) # Output: [1, 2, 3, 4, 5, 6, 7, 8, 9]
"리스트 컴프리헨션, 알면 알수록 강력한 파이썬의 핵심 기능입니다. 오늘 배운 내용을 바탕으로 여러분의 코드를 더욱 간결하고 효율적으로 만들어보세요!"
2. 기초 사용법
| 리스트 컴프리헨션을 쓰지 않고, 0부터 4사이의 정수로 리스트를 생성 | 이를 리스트 컴프리헨션을 이용하면 코드처럼 한줄에 처리가 가능 |
![]() |
![]() |
| 리스트 컴프리헨션을 사용하는 이유는 대괄호 내에서 수식이나 함수 적용뿐만 아니라, if - else문으로 조건을 자유롭게 줄 수 있다는 점입니다. | |
(1) 수식적용 예 |
![]() |
![]() (2) 함수적용 예 |
![]() |
| 사실 list 컴프리헨션을 쓰다 보면 이 조건문을 쓰는 게 매우 편리합니다. 조건문은 리스트 컴프리헨션에서 왼쪽에 쓸 수도 있고, 오른쪽에 쓸 수도 있습니다. if문만 쓸 때는 오른쪽에, if else문을 쓸때는 왼쪽에 씁니다. | |
오른쪽에 if문 사용 |
|
| 오른쪽에 if문을 여러 개 사용할 수 돼있습니다. | |
| 왼쪽에 if문을 사용할 때는 반드시 else와 같이 사용해야 합니다. | |
![]() |
|
| * 코드 설명 i if i%2==0 else 'odd-1' if i==1 else 'odd-3'을 분해해보겠습니다. i if i%2==0 : i가 2로 나누어 떨어지면 i를 그대로 출력 else 'odd-1' if i==1 : 2로 나누어 떨어지지 않으면, i가 1일 때 'odd-1' 출력 else 'odd-3' : 위의 두 조건이 모두 성립하지 않으면 'odd-3' 출력 정리하자면, i가 2로 나누어 떨어지면 그대로 출력하고, 1일 때는 'odd-1'을 출력하고 그렇지 않은 경우는 3밖에 남지 않으므로, 3일 때 'odd-3'이 출력됩니다. |
|
![]() |
for문 2개 사용 |
| 리스트 컴프리헨션은 대괄호로 둘러쌓고 안에 코드를 입력하게 됩니다. 그런데 대괄호 대신에 중괄호 "{" "}"로 둘러쌓게 되면 집합 컴프리헨션(Set Comprehension)가 됩니다. |
![]() |
| 이때, 딕셔너리의 형식에 맞게 키(key)와 값(value)을 콜론(":")을 사용하면 딕셔너리 컴프리헨션(Dictionary Comprehension)이 됩니다. | ![]() |
'05. 빅분기 ADP > 04. ADP' 카테고리의 다른 글
| 데이터분석 공모전 준비 연습 (3) | 2025.07.27 |
|---|---|
| ADP 시험 범위 [필기] (2) | 2025.07.27 |
| 01. 파일 입출력 (0) | 2025.04.05 |
| 00. 판다스(Pandas) 기본 자료구조 (0) | 2025.04.05 |
| 00. 판다스(Pandas) 공식문서 (0) | 2025.04.05 |















