PHpullh
학습 라이브러리/Python/리스트 컴프리헨션 심화

PYTHON · 컬렉션

리스트 컴프리헨션 심화

중첩 루프, 조건부 표현식, walrus 연산자를 활용한 고급 리스트 컴프리헨션 패턴입니다.

컬렉션중급comprehension컴프리헨션리스트중첩

핵심 설명

중첩 루프, 조건부 표현식, walrus 연산자를 활용한 고급 리스트 컴프리헨션 패턴입니다.

Python code

# 중첩 루프
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flat = [x for row in matrix for x in row]
print(flat)  # [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 행렬 전치
transposed = [[row[i] for row in matrix] for i in range(3)]
print(transposed)  # [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

# 조건부 표현식 (if-else)
nums = range(-5, 6)
labels = ["양수" if n > 0 else "0" if n == 0 else "음수"
          for n in nums]
print(labels)

# walrus 연산자로 중복 계산 방지
import math
data = [2, 7, 15, 3, 25, 8]
results = [(x, y) for x in data
           if (y := math.sqrt(x)) > 2.5]
print(results)  # [(7, 2.6457...), (15, 3.8729...), (25, 5.0), (8, 2.8284...)]

# 중첩 vs 제너레이터 (메모리 효율)
big_flat = [x for row in range(1000)
            for x in range(1000)]  # 메모리 사용 큼
# 제너레이터가 더 효율적
big_gen = (x for row in range(1000)
           for x in range(1000))

학습 팁

컴프리헨션이 3줄 이상이면 일반 for 루프가 더 읽기 좋습니다. 가독성을 우선하세요.

주의할 점

중첩 컴프리헨션의 루프 순서는 일반 for 루프와 같습니다. 바깥 루프가 먼저, 안쪽 루프가 나중입니다.

자주 묻는 질문

리스트 컴프리헨션 심화란 무엇인가요?

중첩 루프, 조건부 표현식, walrus 연산자를 활용한 고급 리스트 컴프리헨션 패턴입니다.

리스트 컴프리헨션 심화 학습 시 주의할 점은 무엇인가요?

중첩 컴프리헨션의 루프 순서는 일반 for 루프와 같습니다. 바깥 루프가 먼저, 안쪽 루프가 나중입니다.