파이썬 리스트 컴프리헨션 완전 정복
📌 반복문을 한 줄로 끝내는 리스트 생성 공식
파이썬을 쓰다 보면 반복문으로 리스트를 만들 일이 자주 생기죠.
그럴 때마다 for문을 길게 쓰는 건 지겹기도 하고, 코드를 한눈에 보기 어려운 경우가 많습니다.
이럴 때 딱 필요한 기능이 바로 리스트 컴프리헨션입니다.
복잡한 반복문도 단 한 줄로 표현할 수 있어, 초보자도 쉽게 배울 수 있고 실무에서도 자주 쓰이는 대표적인 파이썬 문법이에요.
이번 글에서는 리스트 컴프리헨션의 기본 구조부터 조건문을 결합한 고급 사용법까지 간단한 예제로 설명드릴게요.
복잡한 리스트 생성 로직도 이 문법만 알면 훨씬 깔끔하게 정리할 수 있습니다.
처음 접하는 분들도 이해할 수 있도록 하나하나 친절하게 설명해드릴게요.
🔗 리스트 컴프리헨션이란?
리스트 컴프리헨션(List Comprehension)은 파이썬에서 리스트를 만들기 위한 간결한 표현식입니다.
기존에는 for문과 append를 조합해서 리스트를 만들었지만, 리스트 컴프리헨션을 사용하면 한 줄로 더 명확하게 리스트를 생성할 수 있죠.
예를 들어, 1부터 5까지의 제곱수를 리스트로 만들고 싶을 때 일반적인 방법은 아래와 같습니다.
squares = []
for i in range(1, 6):
squares.append(i**2)
리스트 컴프리헨션을 사용하면 이렇게 바뀝니다.
squares = [i**2 for i in range(1, 6)]
결과는 동일하지만 코드 길이가 훨씬 짧고 명확하죠.
이런 간결함 덕분에 많은 파이썬 개발자들이 리스트 컴프리헨션을 선호합니다.
💡 TIP: 리스트 컴프리헨션은 튜플, 딕셔너리, 집합에도 응용할 수 있어 활용도가 매우 높습니다.
단순한 리스트 생성부터 조건을 포함한 필터링까지, 리스트 컴프리헨션은 파이썬에서 가장 많이 사용되는 문법 중 하나입니다.
지금부터 그 원리를 하나씩 함께 살펴볼게요.
🧱 기본 구조와 작동 방식
리스트 컴프리헨션은 다음과 같은 구조로 이루어져 있습니다.
[표현식 for 항목 in 반복가능한_객체]
예를 들어 1부터 5까지의 수에 10을 더한 리스트를 만들고 싶다면 아래처럼 작성할 수 있습니다.
result = [i + 10 for i in range(1, 6)]
print(result) # [11, 12, 13, 14, 15]
이 문법은 마치 반복문과 append를 동시에 실행하는 것처럼 동작합니다.
아래는 내부적으로 어떻게 작동하는지를 일반적인 for문으로 표현한 예시입니다.
result = []
for i in range(1, 6):
result.append(i + 10)
리스트 컴프리헨션은 이 모든 과정을 한 줄로 처리하기 때문에 가독성과 작성 속도 모두에서 뛰어난 효과를 발휘합니다.
- ✅코드 길이 단축
- ✅실행 성능 개선
- ✅가독성과 유지보수 향상
이제 리스트 컴프리헨션의 기본 구조를 이해했다면, 다음 단계로 조건문을 함께 적용하는 고급 방식도 금방 익힐 수 있어요.
⚙️ 조건문 결합 방법
리스트 컴프리헨션의 강력한 기능 중 하나는 바로 조건문(if)을 결합할 수 있다는 점입니다.
이 기능을 이용하면 특정 조건을 만족하는 항목만 리스트에 포함시킬 수 있어 훨씬 유용하게 활용할 수 있죠.
예를 들어, 1부터 10까지의 숫자 중 짝수만 리스트로 만들고 싶다면 아래와 같이 작성할 수 있습니다.
evens = [i for i in range(1, 11) if i % 2 == 0]
print(evens) # [2, 4, 6, 8, 10]
이 구조는 다음과 같은 일반 for문과 동일한 결과를 만듭니다.
evens = []
for i in range(1, 11):
if i % 2 == 0:
evens.append(i)
조건문이 리스트 컴프리헨션에 포함되면 필터 역할을 하게 되며,
특정 조건을 만족하는 요소만 리스트에 추가됩니다.
💡 TIP: 조건문은 리스트 뒤에 위치해야 하며, 표현식 내부에 조건을 포함하려면 삼항 연산자를 사용할 수 있습니다.
예를 들어, 짝수는 그대로 두고 홀수는 0으로 처리하고 싶다면 이렇게도 쓸 수 있어요.
modified = [i if i % 2 == 0 else 0 for i in range(1, 11)]
print(modified) # [0, 2, 0, 4, 0, 6, 0, 8, 0, 10]
이처럼 리스트 컴프리헨션에 조건을 결합하면 훨씬 더 유연한 데이터 생성이 가능합니다.
이제 복잡한 조건도 깔끔하게 처리해보세요.
📊 중첩 반복문 처리
리스트 컴프리헨션은 단순 반복뿐만 아니라 중첩 반복문(nested loop)도 처리할 수 있습니다.
2차원 배열이나 곱집합 같은 복합 구조를 간결하게 생성할 때 특히 유용하죠.
예를 들어, 두 개의 리스트에서 가능한 모든 조합을 만들고 싶다면 다음과 같이 중첩 리스트 컴프리헨션을 사용할 수 있습니다.
a = [1, 2]
b = ['A', 'B']
pairs = [(x, y) for x in a for y in b]
print(pairs) # [(1, 'A'), (1, 'B'), (2, 'A'), (2, 'B')]
위 코드는 아래와 같은 이중 for문을 한 줄로 표현한 것입니다.
pairs = []
for x in a:
for y in b:
pairs.append((x, y))
이처럼 리스트 컴프리헨션은 반복문이 앞에서부터 순차적으로 중첩되며,
앞쪽 루프가 먼저 실행되고 그 안에서 뒤쪽 루프가 반복됩니다.
💡 TIP: 중첩 리스트 컴프리헨션은 가독성이 떨어질 수 있으므로 너무 복잡한 구조는 피하고, 최대 2단계까지만 사용하는 것이 좋습니다.
또한 2차원 리스트를 1차원으로 펼칠 때도 컴프리헨션이 매우 유용합니다.
matrix = [[1, 2], [3, 4], [5, 6]]
flattened = [num for row in matrix for num in row]
print(flattened) # [1, 2, 3, 4, 5, 6]
중첩된 구조도 이렇게 간단하게 풀어낼 수 있으니,
리스트 컴프리헨션은 정말 다재다능한 도구라는 걸 느끼실 거예요.
💡 컴프리헨션 vs 일반 for문
리스트 컴프리헨션은 일반 for문보다 짧고 간결한 표현이 가능하다는 장점이 있습니다.
하지만 항상 컴프리헨션이 정답은 아닙니다.
상황에 따라 어떤 방식이 더 적절할지 판단하는 것이 중요해요.
다음은 동일한 기능을 컴프리헨션과 for문 두 방식으로 비교한 예시입니다.
# 리스트 컴프리헨션
squares = [x**2 for x in range(1, 6)]
# 일반 for문
squares = []
for x in range(1, 6):
squares.append(x**2)
- ⚡컴프리헨션은 간결하고 빠르며 한눈에 구조를 파악하기 쉬움
- 🧱for문은 여러 줄로 나뉘어 로직이 복잡하거나 조건이 많을 때 더 유리
따라서 리스트 컴프리헨션은 단순한 리스트 생성에는 매우 적합하지만,
로직이 복잡해지고 조건문이 많아질 경우에는 오히려 가독성이 떨어질 수 있으니 주의해야 합니다.
⚠️ 주의: 지나치게 복잡한 리스트 컴프리헨션은 오히려 코드의 이해를 방해할 수 있습니다. 조건이 많거나 중첩이 깊을 때는 for문을 사용하는 것이 더 나을 수 있습니다.
결론적으로 컴프리헨션과 for문은 각자의 장단점이 있으며,
문맥에 맞게 유연하게 선택하는 것이 가장 좋은 파이썬 코드 작성 습관입니다.
❓ 자주 묻는 질문 (FAQ)
리스트 컴프리헨션은 왜 사용하는 건가요?
조건문도 리스트 컴프리헨션에서 쓸 수 있나요?
중첩된 for문도 리스트 컴프리헨션으로 작성 가능한가요?
컴프리헨션이 항상 for문보다 좋은가요?
튜플이나 딕셔너리에도 컴프리헨션을 쓸 수 있나요?
리스트 컴프리헨션을 사용할 때 주의할 점은?
컴프리헨션에서 else 조건을 넣을 수 있나요?
속도면에서도 컴프리헨션이 더 빠른가요?
📌 한 줄로 끝내는 파이썬 리스트 생성 기술
파이썬 리스트 컴프리헨션은 단순히 문법을 줄이기 위한 수단을 넘어서, 코드의 가독성과 작성 효율을 극대화해주는 기능입니다.
기본 구조만 익혀두면 반복 작업은 물론이고 조건문, 중첩 반복까지도 깔끔하게 처리할 수 있어요.
복잡한 로직을 한눈에 보여주는 컴프리헨션은 실무에서도 널리 쓰이며, 코드 리뷰 시에도 유리한 표현 방식입니다.
단, 너무 많은 조건과 반복을 한 줄에 넣기보다는 적절한 범위 내에서 간결함을 추구하는 것이 좋습니다.
이 글을 통해 리스트 컴프리헨션의 개념부터 활용, 그리고 주의사항까지 모두 익혔다면 이제 여러분도 for문을 대체할 스마트한 선택을 할 수 있게 되었을 거예요.
한 줄로 더 깔끔하고 똑똑한 파이썬 코딩, 지금 바로 시작해보세요!
🏷️ 관련 태그 : 파이썬기초, 리스트컴프리헨션, 파이썬반복문, 컴프리헨션사용법, 조건문리스트, 파이썬문법, 파이썬개발, 코딩초보, 파이썬튜토리얼, 프로그래밍입문