비전공자 파이썬 리스트 컴프리헨션, 꼭 배워야 할까요
결론부터 말씀드리면, 반드시 배워야 하는 문법은 아니지만 알아두면 코드를 읽고 쓰는 속도가 확실히 빨라집니다. 리스트 컴프리헨션(list comprehension)은 for문으로 여러 줄에 걸쳐 작성하던 반복 작업을 한 줄로 줄여주는 파이썬 문법입니다. 비전공자 파이썬 반복문(for문) 배우는 법을 익히고 실무에 어느 정도 적용해보신 분이라면, 그다음 단계로 배워두기 좋은 문법입니다.
실무에서 엑셀 열 데이터를 처리하다 보면 “이 리스트의 값을 전부 두 배로 만들고 싶다”, “이 중에서 조건에 맞는 것만 뽑고 싶다” 같은 요구가 자주 생깁니다. 이런 작업을 for문으로 짜면 코드가 4~5줄이 되지만, 리스트 컴프리헨션을 쓰면 1줄로 끝납니다. 문제는 처음 보는 사람에게는 이 한 줄이 오히려 암호처럼 느껴진다는 점입니다. 그래서 “꼭 배워야 하나요”라는 질문이 자주 나옵니다.
for문과 리스트 컴프리헨션, 뭐가 다른가요
두 방식은 결과적으로 똑같은 리스트를 만들지만, 코드의 길이와 읽는 방식이 다릅니다. for문은 “무엇을 어떻게 할지”를 순서대로 풀어 쓰고, 리스트 컴프리헨션은 “결과가 무엇인지”를 먼저 말하고 조건을 뒤에 붙이는 방식입니다. 예를 들어 매출 리스트에서 10만원 이상인 값만 뽑는 작업을 비교해보겠습니다.
매출 = [85000, 120000, 95000, 200000, 60000]
# for문으로 작성
결과 = []
for 값 in 매출:
if 값 >= 100000:
결과.append(값)
print(결과) # [120000, 200000]
같은 작업을 리스트 컴프리헨션으로 쓰면 이렇게 됩니다.
매출 = [85000, 120000, 95000, 200000, 60000]
결과 = [값 for 값 in 매출 if 값 >= 100000]
print(결과) # [120000, 200000]
구조를 뜯어보면 [반환할 값 for 항목 in 리스트 if 조건] 순서입니다. “매출 리스트를 하나씩 꺼내서(for 값 in 매출), 10만원 이상이면(if 값 >= 100000), 그 값을 결과에 담는다(값)“는 뜻을 한 줄에 압축한 것뿐입니다. for문에서 하던 것과 논리는 완전히 같습니다.
값을 변형해서 새 리스트 만들기
조건으로 거르는 것 외에, 리스트의 모든 값을 가공해서 새 리스트를 만드는 경우도 많습니다. 예를 들어 부가세 10퍼센트를 붙인 금액 리스트를 만든다고 하면 다음과 같이 작성합니다.
단가 = [10000, 25000, 8000]
부가세포함 = [int(값 * 1.1) for 값 in 단가]
print(부가세포함) # [11000, 27500, 8800]
문자열 처리에도 자주 쓰입니다. 거래처명 리스트에서 앞뒤 공백을 지우고 싶다면 이렇게 씁니다.
거래처 = [" 픽셀앤코드 ", "양주전자 ", " 경기물산"]
정리된거래처 = [이름.strip() for 이름 in 거래처]
print(정리된거래처) # ['픽셀앤코드', '양주전자', '경기물산']
이런 텍스트 정리 작업을 더 폭넓게 다루고 싶다면 비전공자 파이썬 문자열 함수 배우는 법도 함께 참고하시면 좋습니다.

딕셔너리에도 컴프리헨션을 쓸 수 있나요
가능합니다. 대괄호 대신 중괄호를 쓰고 키:값 형태로 작성하면 딕셔너리 컴프리헨션이 됩니다. 예를 들어 직원 이름 리스트와 근무시간 리스트가 각각 있을 때, 이름을 키로 하는 딕셔너리를 만들 수 있습니다.
이름목록 = ["김대리", "이과장", "박사원"]
근무시간 = [8, 9, 7]
근무표 = {이름: 시간 for 이름, 시간 in zip(이름목록, 근무시간)}
print(근무표) # {'김대리': 8, '이과장': 9, '박사원': 7}
비전공자 파이썬 딕셔너리 배우는 법에서 딕셔너리 기본 개념을 먼저 익히셨다면 위 코드가 훨씬 자연스럽게 읽히실 겁니다. zip은 두 리스트를 짝지어 하나씩 묶어주는 함수로, 명단과 데이터를 나란히 놓고 연결할 때 자주 쓰입니다.
언제 쓰면 안 되나요
리스트 컴프리헨션이 항상 좋은 것은 아닙니다. 조건이 여러 개 겹치거나 반복 안에서 또 다른 반복을 처리해야 하는 경우, 억지로 한 줄에 욱여넣으면 오히려 읽기 어려운 코드가 됩니다. 이런 경우에는 for문으로 풀어 쓰는 편이 나중에 코드를 다시 볼 때나 동료가 볼 때 훨씬 이해하기 쉽습니다.
판단 기준은 간단합니다. 조건이 하나이고, 처리 로직이 한 줄 안에 들어갈 만큼 단순하다면 리스트 컴프리헨션을 쓰고, 그렇지 않다면 for문을 씁니다. 코드는 짧다고 무조건 좋은 것이 아니라, 몇 달 뒤 다시 봐도 무슨 일을 하는지 바로 파악되는 것이 좋은 코드입니다.
# 조건이 여러 개 겹치면 이렇게 for문이 낫습니다
결과 = []
for 값 in 매출:
if 값 >= 100000:
if 값 % 1000 == 0:
결과.append(값)
실무에 어떻게 적용하면 좋을까요
엑셀 데이터를 pandas로 불러와 처리하는 작업을 이미 하고 계신다면, 리스트 컴프리헨션은 컬럼 하나를 가공해서 새 컬럼을 만들 때 유용합니다. 예를 들어 거래처명 컬럼에서 특정 문자열을 포함하는 행만 골라내거나, 금액 컬럼에 세율을 일괄 적용하는 작업에 바로 활용할 수 있습니다. 엑셀 반복 업무, 파이썬으로 10분 만에 끝내기에서 다룬 자동화 스크립트에도 리스트 컴프리헨션을 넣으면 코드가 한결 간결해집니다.
처음부터 모든 반복문을 리스트 컴프리헨션으로 바꾸려고 하실 필요는 없습니다. for문으로 먼저 정확하게 작성한 뒤, 그 코드가 단순한 패턴이라는 것이 확인되면 리스트 컴프리헨션으로 줄여보는 순서를 권합니다. 이렇게 연습하면 문법을 억지로 외우지 않아도 자연스럽게 읽고 쓸 수 있게 됩니다.
파이썬 기초 문법을 하나씩 익히고 있지만 우리 회사 업무에 맞는 자동화까지 어떻게 이어가야 할지 막막하시다면, 픽셀앤코드의 IT 교육 서비스를 통해 실제 업무 데이터를 예제로 삼아 단계별로 학습하는 방법도 있습니다. 반복 업무의 어떤 부분부터 자동화할지 함께 진단하는 것부터 시작할 수 있습니다.