이 글에서는 파이썬에서 리스트(List)와 튜플(Tuple)의 차이점을 자세히 알아보겠습니다.
리스트와 튜플은 파이썬에서 가장 많이 사용되는 두 가지 대표적인 데이터 구조입니다. 둘 다 여러 개의 데이터를 하나의 변수에 저장할 수 있다는 공통점이 있지만, 몇 가지 중요한 차이점이 있습니다.
리스트(List)란?
리스트는 '시퀀스(sequence)'라고도 불리며, 파이썬에서 가장 자주 사용되는 데이터 타입 중 하나입니다. 다양한 용도로 활용할 수 있는 유연성이 큰 장점입니다.
리스트는 모든 요소를 대괄호 [ ] 안에 넣고, 각 요소를 쉼표(,)로 구분하여 생성합니다. 리스트에는 원하는 만큼의 요소를 담을 수 있으며, 정수(int), 실수(float), 문자열(string) 등 서로 다른 자료형을 함께 저장할 수도 있습니다.
리스트의 가장 중요한 특징은 변경 가능(mutable)하다는 점입니다. 즉, 한 번 생성된 이후에도 요소를 추가, 수정, 삭제할 수 있습니다.
리스트 생성 예제
서로 다른 자료형을 포함하는 리스트는 다음과 같이 생성할 수 있습니다.
my_list = [1.8, 'string', 34, 'a'] print(my_list)
출력 결과
[1.8, 'string', 34, 'a']
리스트 요소에 접근하기
리스트 내부의 데이터에 접근하는 방법은 여러 가지가 있습니다.
인덱싱(Indexing)
인덱스를 사용하면 특정 위치의 요소에 접근할 수 있습니다. 인덱스는 0부터 시작한다는 점에 유의하세요.
my_list = [1.8, 'string', 34, 'a']
print("두 번째 요소는")
print(my_list[1])출력 결과
두 번째 요소는 string
슬라이싱(Slicing)
특정 범위의 요소들을 한 번에 가져오는 것을 슬라이싱이라고 합니다.
my_list = [1.8, 'string', 34, 'a']
print("특정 범위의 요소들")
print(my_list[1:4])출력 결과
특정 범위의 요소들 ['string', 34, 'a']
리스트 값 변경하기
리스트는 변경 가능하기 때문에, 인덱싱으로 특정 위치에 접근한 후 새로운 값을 할당하면 해당 요소를 수정할 수 있습니다.
my_list = [1.8, 'string', 34, 'a']
print("변경 전 리스트")
print(my_list)
my_list[1] = 'my_string'
print("변경 후 리스트")
print(my_list)출력 결과
변경 전 리스트 [1.8, 'string', 34, 'a'] 변경 후 리스트 [1.8, 'my_string', 34, 'a']
튜플(Tuple)이란?
튜플은 소괄호 ( )를 사용하여 생성합니다. 튜플의 핵심 특징은 불변(immutable)하다는 것입니다. 즉, 한 번 할당된 요소는 나중에 수정하거나 삭제할 수 없습니다.
리스트와 마찬가지로 튜플에도 원하는 만큼의 요소를 담을 수 있으며, 정수, 실수, 문자열 등 다양한 자료형을 혼합하여 저장할 수 있습니다.
참고: 소괄호 없이도 튜플을 생성할 수 있지만, 코드의 가독성을 위해 소괄호를 사용하는 것이 좋은 습관입니다.
요소가 하나인 튜플 생성 예제
요소가 하나뿐인 튜플을 만들 때는 반드시 요소 뒤에 쉼표(,)를 붙여야 합니다. 쉼표가 없으면 일반 문자열로 인식됩니다.
my_tuple = ("hey",)
print("요소가 하나인 튜플 생성")
print(my_tuple)출력 결과
('hey',)리스트와 튜플의 주요 차이점 요약
- 문법: 리스트는 대괄호 [ ], 튜플은 소괄호 ( )를 사용합니다.
- 변경 가능 여부: 리스트는 mutable(변경 가능), 튜플은 immutable(변경 불가)입니다.
- 성능: 튜플은 리스트보다 약간 더 빠르고 메모리를 적게 사용합니다.
- 용도: 값이 변하지 않아야 하는 데이터(예: 좌표, 설정값)는 튜플로, 데이터를 계속 수정해야 한다면 리스트로 저장하는 것이 좋습니다.
참고: 튜플의 요소 접근 방법, 음수 인덱싱(negative indexing), 슬라이싱은 리스트와 동일하게 작동합니다.
한 가지 흥미로운 점은, 튜플 안에 리스트가 포함되어 있다면 그 리스트 자체는 변경할 수 있다는 것입니다. 다만 튜플에 직접 저장된 요소들은 변경할 수 없습니다.