for 문은 쉽지만 손목 건강에는 별로 좋지 않다
그래서 있는게 리스트 컴프리헨션으로 for 반복문과 if 조건을 한줄에 압축해서 리스트를 만드는 문법이다.
리스트 만드는 공장을 만든다고 생각하면 된다.
기본 공식
1. for 기본형
[ 최종 리스트에 담을 값 | for 항목 in 반복 대상]
nums = [1, 2, 3, 4, 5] # 재료
n_list = [] #산출물 담을 공간
for n in nums :
list.append(n*n)
#n_list에 담긴 값 1*1, 2*2, 3*3, 4*4, 5*5
#n_list [1, 4, 9, 16, 25]
이 코드를 리스트 컴프리헨션으로 바꾸면 다음과 같이 된다
n_list = [n*n for n in nums] # 설계도
# n*n : 나는 n*n을 리스트에 담을거야
# for n in nums : 대상은 nums 리스트를 반복하면서 나오는 n이야
2.조건 반복형 for 루프 + if 조건
[ 최종 리스트에 담을 값 | for 항목 in 반복 대상 | if 조건문]
만약 위 결과에서 짝수만 담고 싶다면
n_list = [n*n for n in nums if n % 2 == 0]
# n*n : 나는 n*n을 리스트에 담을거야
# for n in nums : 대상은 nums 리스트를 반복하면서 나오는 n이야
# if n % 2 ==0 : 근데 n이 짝수일때만 담을거야
예제
category_indices = [X_train.columns.get_loc(c) for c in category_features if c in X_train.columns]
다음과 같은 코드가 있다면
1. X_train.columns.get_loc(c) : 컬럼 이름(c)의 위치번호(index)를 담을거야
2. for c in category_features : category_features에서 컬럼 이름(c)를 하나씩 꺼낼거야
3. if c in X_train.columns : 근데 c가 X_train.columns에 존재 할때만 담을거야
라고 해석하면 된다.
만약 이중 조건을 달고 싶다면 단순히 and나 if 하고 조건을 추가하면 된다.
n_list = [n*n for n in nums if n > 10 and n % 2 == 0]
# n*n : 나는 n*n을 리스트에 담을거야
# for n in nums : 대상은 nums 리스트를 반복하면서 나오는 n이야
# if n > 10 : 근데 n이 10보다 클때만 담을거야
# and n % 2 ==0 : 그리고 n이 짝수일때만 담을거야
'공부 정리 > 파이썬' 카테고리의 다른 글
| 딕셔너리 및 세트 컴프리헨션 (0) | 2025.10.29 |
|---|---|
| 정말 쉽고 편한 컨텍스트 관리자 Context Manager 기능 (0) | 2025.10.27 |