어제 오늘 내일

[Python 기초] "세 줄 코드를 한 줄로!" 리스트 컴프리헨션 완벽 이해 본문

IT/Python

[Python 기초] "세 줄 코드를 한 줄로!" 리스트 컴프리헨션 완벽 이해

hi.anna 2026. 5. 24. 09:28

리스트 컴프리헨션은 리스트 안에 for문과 if문을 직접 집어넣어 새로운 리스트를 생성하는 기법입니다. 처음엔 생소할 수 있지만, 익숙해지면 가독성처리 속도라는 두 마리 토끼를 모두 잡을 수 있는 강력한 무기가 됩니다.


1. 기본 구조: 문 압축하기

기존의 방식은 빈 리스트를 만들고, for문을 돌리면서 하나씩 append를 해줘야 했습니다. 리스트 컴프리헨션은 이를 한 줄로 해결합니다.

📌 예제 코드: 1부터 5까지의 제곱 구하기

# 1. 기존 방식 (3줄)
squares = []
for x in range(1, 6):
    squares.append(x**2)

# 2. 리스트 컴프리헨션 (1줄)
# [ 표현식 for 항목 in 반복가능객체 ]
squares_comp = [x**2 for x in range(1, 6)]

print(squares_comp) 
# 출력: [1, 4, 9, 16, 25]

2. 조건문() 추가하기: 데이터 필터링

특정 조건에 맞는 데이터만 골라내고 싶을 때, for문 뒤에 if문을 붙여주면 됩니다.

]

📌 예제 코드: 1부터 10 사이의 짝수만 담기

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# "n을 담을 건데, numbers에서 꺼낸 n이 2로 나누어 떨어질 때만 담아라!"
evens = [n for n in numbers if n % 2 == 0]

print(evens)
# 출력: [2, 4, 6, 8, 10]

3. 조건부 표현식() 활용하기

조건에 따라 값을 다르게 저장하고 싶을 때는 if-else 문을 for에 배치합니다.

📌 예제 코드: 홀수/짝수 판별 리스트

data = [1, 2, 3, 4, 5]

# "짝수면 'Even', 홀수면 'Odd'라고 적어서 리스트를 만들어라!"
labels = ["Even" if x % 2 == 0 else "Odd" for x in data]

print(labels)
# 출력: ['Odd', 'Even', 'Odd', 'Even', 'Odd']

4. 실전 활용: 데이터 전처리 (문자열)

크롤링 등으로 수집한 지저분한 문자열 데이터를 한 방에 깔끔하게 정리할 때 최고입니다.

raw_names = ["  김철수  ", "이영희 ", "  박민수"]

# 양쪽 공백을 제거(.strip())한 이름들의 리스트 만들기
clean_names = [name.strip() for name in raw_names]

print(clean_names)
# 출력: ['김철수', '이영희', '박민수']

📝 핵심 요약

  1. 가독성: 코드가 간결해져서 로직을 한눈에 파악하기 좋습니다.
  2. 성능: 파이썬 내부적으로 최적화되어 있어 일반 for문보다 실행 속도가 약간 더 빠릅니다.
  3. 주의: 너무 복잡한 중첩 반복문이나 긴 조건문을 한 줄에 넣으면 오히려 가독성을 해칠 수 있습니다. (적당한 길이가 생명!)

리스트 컴프리헨션을 마스터하셨으니, 이제 여러분의 코드는 한층 더 세련되게 변할 거예요.
 

반응형
Comments