십대를 위한 코딩/십대를 위한 파이썬
파이썬 리스트 내포 오류 쉽게 이해하기
forSilver
2025. 5. 12. 06:48
반응형
괄호 하나의 차이, 왜 그렇게 중요한가요?
― 파이썬 리스트 내포 오류 쉽게 이해하기
파이썬 초보자에게 가장 많이 발생하는 실수 중 하나는 리스트 내포(List Comprehension)를 사용할 때 괄호를 빼먹는 것입니다.
특히 (x, y)
처럼 값을 묶어야 할 자리에 x, y
라고만 쓰면 다음과 같은 오류를 만나게 됩니다:
SyntaxError: did you forget parentheses around the comprehension target?
처음 보는 사람은 이게 무슨 말인지 잘 이해되지 않죠.
그래서 이 글에서는 괄호 하나가 왜 그렇게 중요한지,
직관적 비유와 실습 예제를 통해 쉽게 풀어보겠습니다.
1. 상황 재현 – 두 개의 시퀀스 조합 만들기
seq1 = 'abc'
seq2 = (1, 2, 3)
이제 이 두 시퀀스의 모든 조합을 리스트로 만들고자 합니다.
가장 직관적인 방법은 리스트 내포입니다.
✅ 올바른 코드:
[(x, y) for x in seq1 for y in seq2]
출력:
[('a', 1), ('a', 2), ('a', 3),
('b', 1), ('b', 2), ('b', 3),
('c', 1), ('c', 2), ('c', 3)]
각각 x
, y
값을 튜플로 묶어서 리스트에 담고 있습니다.
2. 잘못된 코드 – 괄호가 없으면?
[x, y for x in seq1 for y in seq2]
오류 발생!
SyntaxError: did you forget parentheses around the comprehension target?
3. 왜 오류가 날까요? – 박스 포장 비유로 설명
✅ 올바른 경우 [(x, y) ...]
x
와y
를 하나의 튜플(작은 박스)에 넣어서 리스트에 저장- 이 박스가 리스트에 차곡차곡 쌓임
- 즉, 리스트는 “박스들”의 모음
❌ 잘못된 경우 [x, y ...]
- 파이썬은 리스트 내포에서 하나의 표현식만 받음
x, y
는 두 개의 값 → 문법 혼란 발생
4. 핵심 정리
표현 | 의미 | 동작 여부 |
---|---|---|
[(x, y) for x in A for y in B] |
(x, y)를 하나의 튜플로 리스트에 추가 | ✅ 정상 작동 |
[x, y for x in A for y in B] |
두 표현식이 함께 들어가 문법 오류 발생 | ❌ 오류 발생 |
5. 참고: 문자열 조합을 하고 싶다면?
[x + str(y) for x in seq1 for y in seq2]
출력:
['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3']
✅ 마무리 요약
리스트 내포는 항상 하나의 표현식만을 대상으로 합니다.
여러 값을 넣으려면 반드시 괄호로 묶어서 튜플로 만들어야 합니다.
괄호 하나의 유무가 문법 오류를 일으키는 결정적 차이가 됩니다.
다음 글에서는 리스트 내포 안에 if 조건문
을 넣는 방법과
복잡한 조건이 들어갈 때 코드가 어떻게 바뀌는지 소개해드리겠습니다.
파이썬의 우아한 반복문 세계, 한 걸음 더 깊이 들어가 보세요!