🧠 리스트 컴프리헨션(List Comprehension) 완벽 가이드 + .join() 활용 예시
리스트 컴프리헨션은 파이썬에서 리스트를 간결하게 생성할 수 있는 문법입니다. 기존의 for문을 줄여 한 줄로 표현할 수 있어 짧고 가독성이 좋은 코드를 만들 수 있습니다.
또한, 리스트로 만든 데이터를 문자열로 변환할 때 자주 쓰이는 메서드인 .join()도 함께 알아두면 유용합니다.
✅ 기본 문법
[표현식 for 항목 in 반복가능한_객체]
예:
numbers = [1, 2, 3, 4, 5]
squares = [n**2 for n in numbers] # [1, 4, 9, 16, 25]
➕ 해석:
"numbers 안에 있는 n들을 하나씩 꺼내서, 각각을 제곱한 값을 새로운 리스트 squares에 넣어라"
🔁 for문과의 비교
# 일반 for문
squares = []
for n in numbers:
squares.append(n**2)
# 리스트 컴프리헨션
squares = [n**2 for n in numbers]
결과는 동일하지만 코드 길이와 가독성이 달라집니다.
🎯 조건문 추가하기
# 짝수만 제곱해서 리스트 만들기
[n**2 for n in numbers if n % 2 == 0] # [4, 16]
➕ 해석:
"numbers 안에 있는 n들 중에서 짝수인 것만 골라, 제곱한 값을 리스트로 만든다"
🎥 실전 예제: 영화 제목만 추출하기
movie_list = [
{'title': '어벤져스', 'year': 2012},
{'title': '기생충', 'year': 2019},
{'title': '인셉션', 'year': 2010}
]
# 일반 for문 방식
movie_titles = []
for movie in movie_list:
movie_titles.append(movie['title'])
# 리스트 컴프리헨션 방식
movie_titles = [movie['title'] for movie in movie_list]
➕ 해석 (for문 방식):
- movie_titles라는 빈 리스트를 만든 다음
- movie_list 안의 각 movie를 반복하면서
- 각 movie에서 'title'만 꺼내서 리스트에 추가한다
➕ 해석 (컴프리헨션 방식):
"movie_list 안에 있는 movie들 중에서 각 movie의 'title'만 뽑아서 새 리스트 movie_titles를 만들어라"
📦 다양한 예제들
- 1~10 중 짝수만 추출
[n for n in range(1, 11) if n % 2 == 0] # [2, 4, 6, 8, 10]
- 문자열에서 알파벳만 추출
chars = ['a', '1', 'b', '2', 'c']
letters = [ch for ch in chars if ch.isalpha()] # ['a', 'b', 'c']
- 이중 반복문
pairs = [(x, y) for x in [1, 2] for y in [3, 4]]
# [(1, 3), (1, 4), (2, 3), (2, 4)]
🔍 해석 (쉽게!)
[1, 2]에서 x를 하나씩 꺼내고,
그 x에 대해 [3, 4]에서 y를 하나씩 꺼내서,
(x, y) 형태로 튜플을 만든다.
🔁 실제 실행 순서
- x = 1
- y = 3 → (1, 3)
- y = 4 → (1, 4)
- x = 2
- y = 3 → (2, 3)
- y = 4 → (2, 4)
🔗 문자열 결합: .join() 활용 예제
.join()은 문자열 리스트를 하나의 문자열로 합칠 때 사용하는 문자열 메서드입니다.
✅ 기본 문법
'구분자'.join(리스트)
🎯 실전 예제
- 단어를 공백으로 연결하기
words = ['I', 'love', 'Python']
sentence = ' '.join(words)
# 결과: 'I love Python'
- 날짜 포맷 만들기
date_parts = ['2025', '04', '29']
date_str = '-'.join(date_parts)
# 결과: '2025-04-29'
- HTML 줄바꿈 태그로 연결하기
movie_titles = ['어벤져스', '기생충', '인셉션']
response_text = '<br>'.join(movie_titles)
# 결과: '어벤져스<br>기생충<br>인셉션'
- 빈 문자열로 연결 (문자 붙이기)
digits = ['1', '2', '3']
result = ''.join(digits)
# 결과: '123'
⚠️ 주의 사항
- join 대상은 문자열 리스트여야 합니다.
- 숫자가 들어 있으면 에러 발생하므로, str()로 바꿔야 합니다:
numbers = [1, 2, 3]
''.join(str(n) for n in numbers) # '123'
✅ 요약
기능 메서드 예시 결과
리스트 만들기 | 리스트 컴프리헨션 | [1, 2, 3] |
리스트를 문자열로 | .join() | '1,2,3', 'a b c' 등 |
필요하다면 .split() (문자열 나누기), .replace(), 포맷팅 등 문자열 처리 도구도 함께 익혀보면 좋습니다! 😊
'기술블로그' 카테고리의 다른 글
🔢 enumerate() 함수 완벽 가이드 – 인덱스와 함께 반복하자! (0) | 2025.04.29 |
---|---|
⚠️ raise 문법 완벽 가이드 – 예외 처리의 핵심 (0) | 2025.04.29 |
✅ Python 환경 설정부터 Django 프로젝트 시작까지 (feat. pyenv, Pycharm, Poetry) (0) | 2025.04.29 |
✅ Python 환경 설정부터 Django 설치 (feat. pyenv, Pycharm, Poetry) (0) | 2025.04.29 |
Chapter 1-8 Django 템플릿 설정 및 문법 기초 정리 (0) | 2025.04.29 |