개발로그필름
[Python] List Comprehension 리스트 컴프리헨션 본문
728x90
반응형
SMALL
반응형
Python에서 리스트를 다룰 때, 짧고 간결하게 새로운 리스트를 만들 수 있는 방법이 있다
리스트 컴프리헨션이란?
- 기존 리스트나 반복 가능한(iterable) 객체를 기반으로, 새로운 리스트를 간단한 문법으로 만드는 방법
- 일반적인 for 반복문을 한 줄로 표현할 수 있게 도와준다
✅ 기본 문법
[표현식 for 요소 in 반복가능한객체]
🔁 기존 방식과 비교
# 기존 방식
result = []
for i in range(5):
result.append(i * 2)
print(result) # [0, 2, 4, 6, 8]
# 리스트 컴프리헨션
result = [i * 2 for i in range(5)]
print(result) # [0, 2, 4, 6, 8]
두 코드 모두 같은 결과를 출력하지만, 리스트 컴프리헨션을 사용하면 더 짧고 직관적
2. 조건문 추가하기 (if문)
리스트 컴프리헨션에서는 if 조건을 사용해 특정 조건을 만족하는 값만 선택할 수 있다
✅ 문법
[표현식 for 요소 in 반복가능한객체 if 조건]
✅ 예제: 짝수만 리스트로 만들기
even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers) # [0, 2, 4, 6, 8]
3. if-else 함께 쓰기
조건에 따라 다른 값을 넣고 싶을 때는 if-else를 표현식 안에서 사용할 수 있다
✅ 문법
[값1 if 조건 else 값2 for 요소 in 반복가능한객체]
✅ 예제: 짝수는 그대로, 홀수는 -1로 변경
result = [x if x % 2 == 0 else -1 for x in range(5)]
print(result) # [0, -1, 2, -1, 4]
4. 중첩 반복문도 가능
- 리스트 컴프리헨션 안에 이중 for문도 쓸 수 있다
- 2차원 리스트 만들 때 자주 사용된다
✅ 예제: 구구단 결과 만들기
gugudan = [f"{i} x {j} = {i*j}" for i in range(2, 4) for j in range(1, 4)]
print(gugudan)
# ['2 x 1 = 2', '2 x 2 = 4', '2 x 3 = 6', '3 x 1 = 3', '3 x 2 = 6', '3 x 3 = 9']
SMALL
5. 문자열에서 리스트 만들기
문자열을 하나씩 분리해서 리스트로 만들기
chars = [c for c in "hello"]
print(chars) # ['h', 'e', 'l', 'l', 'o']
6. 리스트 컴프리헨션 vs map, filter
리스트 컴프리헨션은 map()과 filter() 함수와 유사하지만 더 읽기 쉽고 직관적
✅ map 예제 (제곱값)
# map 함수
result1 = list(map(lambda x: x**2, range(5)))
# 리스트 컴프리헨션
result2 = [x**2 for x in range(5)]
print(result1) # [0, 1, 4, 9, 16]
print(result2) # [0, 1, 4, 9, 16]
✅ filter 예제 (짝수만)
# filter 함수
result1 = list(filter(lambda x: x % 2 == 0, range(10)))
# 리스트 컴프리헨션
result2 = [x for x in range(10) if x % 2 == 0]
print(result1) # [0, 2, 4, 6, 8]
print(result2) # [0, 2, 4, 6, 8]
7. 실전 예제 모음
🧩 모든 문자열을 대문자로 바꾸기
words = ["apple", "banana", "cherry"]
upper_words = [word.upper() for word in words]
print(upper_words) # ['APPLE', 'BANANA', 'CHERRY']
🧩 리스트에서 숫자만 골라내기
mixed = [1, "a", 2, "b", 3]
numbers = [x for x in mixed if type(x) == int]
print(numbers) # [1, 2, 3]
🧩 2차원 리스트 펼치기 (flatten)
matrix = [[1, 2], [3, 4], [5, 6]]
flat = [num for row in matrix for num in row]
print(flat) # [1, 2, 3, 4, 5, 6]
8. 정리: 리스트 컴프리헨션을 언제 쓰면 좋을까?
- 리스트를 만들기 위한 for문이 너무 길 때
- 간단한 조건이 포함된 리스트를 만들 때
- 코드의 가독성을 높이고 싶을 때
단, 너무 복잡한 리스트 컴프리헨션은 오히려 가독성을 해칠 수 있으니 적절하게 사용하는 것이 중요
반응형
LIST
'IT > Python' 카테고리의 다른 글
[Python] !pip install fake_useragent (0) | 2025.03.20 |
---|---|
[Python] raise : 예외를 발생시키는 방법과 활용법 (0) | 2025.03.18 |
[python] turtle graphic 알고리즘 패턴 만들기 코드 예제 (0) | 2023.09.04 |
[Python] turtle graphic 핀 제어 코드 예제 모음 (1) | 2023.09.03 |
[Python] Turtle Graphic 터틀 그래픽 기본 그리기 코드 예제 (0) | 2023.09.03 |
Comments