-
Notifications
You must be signed in to change notification settings - Fork 0
KR_Comprehension
somaz edited this page Apr 21, 2025
·
3 revisions
리스트를 간단하게 생성하는 방법입니다.
# 기본 형식
# [표현식 for 항목 in 반복가능객체 if 조건문]
# 예제 1: 0-9의 제곱 수 리스트
squares = [x**2 for x in range(10)]
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# 예제 2: 짝수만 포함하는 리스트
evens = [x for x in range(10) if x % 2 == 0]
# [0, 2, 4, 6, 8]
# 예제 3: 중첩 반복문
matrix = [[i+j for j in range(3)] for i in range(3)]
# [[0,1,2], [1,2,3], [2,3,4]]✅ 특징:
- 간결한 리스트 생성
- 조건문 포함 가능
- 중첩 반복문 지원
# 기본 형식
# {키_표현식: 값_표현식 for 항목 in 반복가능객체}
# 예제 1: 숫자:제곱 쌍의 딕셔너리
squares = {x: x**2 for x in range(5)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
# 예제 2: 조건문 포함
even_squares = {x: x**2 for x in range(5) if x % 2 == 0}
# {0: 0, 2: 4, 4: 16}
# 예제 3: 기존 딕셔너리 변환
prices = {'apple': 2.0, 'orange': 3.0, 'banana': 1.0}
doubled = {k: v*2 for k, v in prices.items()}
# {'apple': 4.0, 'orange': 6.0, 'banana': 2.0}✅ 특징:
- 키-값 쌍 생성
- 기존 딕셔너리 변환
- 조건부 필터링
# 기본 형식
# {표현식 for 항목 in 반복가능객체 if 조건문}
# 예제 1: 문자열의 고유 문자
chars = {c for c in 'hello world'}
# {'h', 'e', 'l', 'o', 'w', 'r', 'd', ' '}
# 예제 2: 조건문 포함
vowels = {c for c in 'hello world' if c in 'aeiou'}
# {'e', 'o'}✅ 특징:
- 중복 제거
- 고유 요소 수집
- 집합 연산 지원
# 기본 형식
# (표현식 for 항목 in 반복가능객체 if 조건문)
# 예제 1: 제곱 수 생성
squares = (x**2 for x in range(10))
# 제너레이터 객체 반환
# 사용 예
for square in squares:
print(square) # 하나씩 생성하여 출력✅ 특징:
- 메모리 효율적
- 지연 평가
- 이터레이터 프로토콜
# 예제 1: 2차원 리스트 평탄화
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [x for row in matrix for x in row]
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 예제 2: 조건문 포함한 중첩 컴프리헨션
result = [x+y for x in [1,2,3] for y in [10,20,30] if (x+y) % 2 == 0]✅ 특징:
- 복잡한 데이터 구조 처리
- 다중 반복문 지원
- 조건부 필터링
✅ 모범 사례:
- 가독성을 고려하여 적절히 사용
- 복잡한 컴프리헨션은 일반 반복문으로 작성
- 제너레이터 컴프리헨션은 대용량 데이터 처리시 유용
- 중첩된 컴프리헨션은 신중하게 사용