파이썬을 배우다 보면 대부분 이 시점에서 막힌다.
- 리스트랑 튜플 뭐가 다른 거지?
- 복사했는데 왜 같이 바뀌지?
이 두 가지는 초보자들이 거의 90% 이상 헷갈리는 부분이다.
◆ 리스트 vs 튜플, 뭐가 다른 걸까?
먼저 코드부터 보자.
a = [1, 2, 3] # 리스트
b = (1, 2, 3) # 튜플
겉보기에는 거의 똑같다.
하지만 결정적인 차이 하나가 있다.
가장 큰 차이: 수정 가능 여부
a[0] = 100 # 가능
b[0] = 100 # 오류 발생
리스트는 수정 가능
튜플은 수정 불가능
튜플은 왜 필요할까?
초보자 입장에서는 이런 생각이 든다.
"그럼 그냥 리스트만 쓰면 되는 거 아닌가?"
하지만 튜플이 필요한 이유가 있다.
1. 데이터 보호
예를 들어 좌표를 저장한다고 가정해보자.
point = (10, 20)
이 값이 실수로 바뀌면 문제가 된다.
그래서 수정 불가능한 튜플을 사용한다.
2. 성능(속도)
튜플은 변경이 불가능하기 때문에 내부적으로 더 빠르게 동작한다.
언제 리스트, 언제 튜플을 사용할까?
이렇게 기억하면 된다.
바뀔 가능성 있음 = 리스트
절대 값이 바뀔 가능성이 없음 = 튜플
◆ 리스트 복사, 왜 같이 바뀔까?
문제 상황
a = [1, 2, 3]
b = a
b[0] = 100
print(a)
결과 : [100, 2, 3]
- b = a는 복사가 아니다
- 둘 다 같은 리스트를 가리키는 상태다.
- 즉, 하나를 바꾸면 둘 다 바뀐다
해결 방법
1. 슬라이싱
b = a[:]
이건 새로운 리스트를 만든다
진짜 복사하는 방법이다.
2. copy 모듈
from copy import copy
b = copy(a)
이 코드도 완전히 독립적인 복사이다.
◆ 예제
scores = [10, 20, 30]
backup = scores[:]
scores[0] = 0
print(scores) # [0, 20, 30]
print(backup) # [10, 20, 30]
복사하면 서로 영향이 없음
◆ 요약
리스트 = 수정 가능
튜플 = 수정 불가능
b = a는 복사가 아니라 "공유"
리스트 복사는 반드시 따로 해야 한다.
'Python' 카테고리의 다른 글
| if문 정리 (0) | 2026.04.27 |
|---|---|
| 문자열 포매팅 정리(f-string, format, % 차이) (0) | 2026.04.23 |
| 리스트, 튜플, 딕셔너리, 집합 쉽게 이해하기 (0) | 2026.04.23 |
| 인터프리터, 변수, 자료형 이해하기 (0) | 2026.04.22 |
| 파이썬이란? (0) | 2026.04.22 |
