디지털

Python 리스트와 튜플의 차이점

digital21 2024. 10. 23. 19:30
반응형

리스트와 튜플

 

 

Python 리스트와 튜플의 차이점

Python에서 리스트(list)튜플(tuple)은 둘 다 여러 개의 값을 담을 수 있는 데이터 구조이지만, 몇 가지 중요한 차이점이 있습니다. 이 차이점들로 인해 리스트와 튜플은 각각 다른 상황에서 사용됩니다. 아래에서 리스트와 튜플의 차이점을 자세히 설명하겠습니다.

1. 가변성 (Mutability)

리스트(list)가변적(mutable)입니다. 즉, 한 번 생성된 리스트는 그 안에 있는 요소들을 자유롭게 수정, 추가, 삭제할 수 있습니다.
튜플(tuple)불변적(immutable)입니다. 한 번 생성된 튜플은 그 안의 요소를 변경하거나 삭제할 수 없습니다.

# 리스트 예시
my_list = [1, 2, 3]
my_list[0] = 10  # 리스트의 첫 번째 요소를 10으로 변경
print(my_list)  # 출력: [10, 2, 3]

# 튜플 예시
my_tuple = (1, 2, 3)
my_tuple[0] = 10  # 오류 발생: 튜플은 불변이므로 요소를 변경할 수 없음

2. 사용 방법

리스트는 요소를 변경해야 할 때, 즉 동적으로 데이터를 수정, 추가, 삭제해야 할 경우 적합합니다.
튜플은 데이터가 변경되지 않아야 할 때 사용됩니다. 예를 들어, 좌표나 특정 설정값처럼 한 번 정해지면 바뀌지 않아야 하는 데이터를 저장할 때 적합합니다.

3. 선언 방식

리스트는 대괄호 []를 사용하여 선언하고,
튜플은 소괄호 ()를 사용하여 선언합니다.

# 리스트와 튜플 선언
my_list = [1, 2, 3]  # 리스트 선언
my_tuple = (1, 2, 3)  # 튜플 선언

# 튜플 선언 시 괄호 생략 가능
my_tuple = 1, 2, 3

4. 성능

튜플리스트보다 메모리 효율이 좋고 빠릅니다. 리스트처럼 데이터를 동적으로 수정할 필요가 없기 때문입니다. 따라서 변경되지 않을 데이터를 저장할 때는 튜플을 사용하는 것이 더 효율적입니다.

# 성능 비교 예시
import timeit

# 리스트와 튜플 생성 시간 비교
list_time = timeit.timeit(stmt="[1, 2, 3, 4, 5]", number=1000000)
tuple_time = timeit.timeit(stmt="(1, 2, 3, 4, 5)", number=1000000)

print(f"리스트 생성 시간: {list_time}")
print(f"튜플 생성 시간: {tuple_time}")

5. 기능 (Methods)

리스트는 가변적이기 때문에 요소를 추가하거나 제거할 수 있는 다양한 메서드를 제공합니다. 예를 들어, append(), remove(), pop() 같은 메서드를 사용할 수 있습니다.
튜플은 불변적이므로, 요소 추가/삭제와 관련된 메서드가 없습니다. 대신 count()index() 같은 조회 메서드만 제공합니다.

# 리스트 메서드 예시
my_list = [1, 2, 3]
my_list.append(4)  # 리스트에 4를 추가
my_list.remove(2)  # 리스트에서 2를 제거
print(my_list)  # 출력: [1, 3, 4]

# 튜플 메서드 예시
my_tuple = (1, 2, 3, 2)
print(my_tuple.count(2))  # 출력: 2 (튜플에서 2가 몇 번 등장하는지)
print(my_tuple.index(3))  # 출력: 2 (3이 있는 인덱스)

6. 데이터의 안전성

튜플은 불변이기 때문에, 프로그램에서 데이터가 변경되지 않도록 보장해야 하는 경우 튜플을 사용하는 것이 좋습니다. 예를 들어, 여러 함수나 모듈 간에 데이터를 전달할 때, 그 데이터가 의도치 않게 변경되는 것을 방지하려면 튜플을 사용하는 것이 바람직합니다.

7. 패킹(Packing)과 언패킹(Unpacking)

리스트와 튜플 모두 패킹과 언패킹 기능을 지원합니다. 이는 여러 변수를 리스트나 튜플로 묶거나, 리스트나 튜플의 요소들을 개별 변수로 풀어주는 작업입니다.

# 패킹
my_tuple = 1, 2, 3  # 여러 값을 하나의 튜플로 묶음

# 언패킹
a, b, c = my_tuple  # 튜플의 요소를 개별 변수로 분리
print(a, b, c)  # 출력: 1 2 3

8. 리스트와 튜플의 변경 가능 여부에 따른 사용 예

리스트는 자주 변경되어야 하는 데이터(예: 사용자 목록, 제품 목록 등)를 저장할 때 적합합니다.
튜플은 변경할 필요가 없는 데이터(예: 좌표, 특정 날짜나 설정값 등)를 저장하는 데 적합합니다.

차이점 요약

구분 리스트 (List) 튜플 (Tuple)
가변성 가변적 (수정 가능) 불변적 (수정 불가)
선언 방법 대괄호 [] 소괄호 () 또는 생략
성능 상대적으로 느림 상대적으로 빠름
메서드 요소 추가/삭제 가능 일부 조회 메서드만 제공
사용 예  
반응형