에듀테크 프로젝트 대시보드
컴프리헨션
반복문 + 조건을 한 줄로. [식 for 변수 in 반복 if 조건]
squares = [n * n for n in range(5)] # => [0, 1, 4, 9, 16]
evens = [n for n in range(10) if n % 2 == 0]
# 삼항식으로 값 변형 (if 위치가 앞!)
labels = ["짝" if n % 2 == 0 else "홀" for n in range(4)]
# 동등한 for 문
result = []
for n in range(5):
result.append(n * n)# 이중 루프 — for 를 왼쪽부터 바깥→안 순서로
pairs = [(i, j) for i in range(3) for j in range(2)]
# => [(0,0), (0,1), (1,0), (1,1), (2,0), (2,1)]
# 행렬 평탄화
matrix = [[1, 2], [3, 4]]
flat = [x for row in matrix for x in row] # => [1, 2, 3, 4]
# 중첩 리스트 생성 (컴프리헨션 안에 컴프리헨션)
grid = [[0 for _ in range(3)] for _ in range(2)]{n: n * n for n in range(4)} # => {0:0, 1:1, 2:4, 3:9}
{v: k for k, v in d.items()} # 키-값 뒤집기
{c for c in "banana"} # => {'b', 'a', 'n'}
# 두 리스트로 dict
dict(zip(["a", "b"], [1, 2])) # => {'a': 1, 'b': 2}# 대괄호 대신 소괄호 — 값을 미리 다 만들지 않고 필요할 때 하나씩
gen = (n * n for n in range(1_000_000))
total = sum(n * n for n in range(1_000_000)) # 함수 인자면 괄호 생략 가능
# 메모리: 리스트 컴프리헨션은 전부, 제너레이터는 한 개씩
any(x > 100 for x in data) # 조건 만족 즉시 멈춤[x for x in xs if x > 0] — 조건 안 맞으면 건너뜀[x if x > 0 else 0 for x in xs] — 항상 원소 생성, 값만 선택[x if x else -1 for x in xs if x is not None]print 등) → 그냥 for 문break 가 필요할 때