Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python의 4대 내장 데이터 구조 완벽 정리: 리스트, 튜플, 셋, 딕셔너리

Python은 데이터를 효율적으로 저장하고 관리할 수 있도록 다양한 내장 데이터 구조를 제공합니다. 이 글에서는 가장 많이 사용되는 4가지 데이터 구조인 리스트(List), 딕셔너리(Dictionary), 튜플(Tuple), 셋(Set)의 특징과 사용법을 예제 코드와 함께 자세히 살펴보겠습니다.

1. 리스트(List)

리스트는 순서가 있는 요소들의 시퀀스입니다. 비스칼라(non-scalar) 자료 구조로, 변경 가능(mutable)하다는 것이 가장 큰 특징입니다. 또한 동일한 데이터 타입만 저장할 수 있는 배열과 달리, 리스트에는 서로 다른 데이터 타입의 요소들을 함께 담을 수 있습니다.

리스트의 요소는 대괄호([]) 안에 인덱스를 넣어 접근할 수 있습니다.

다음 예제를 통해 리스트의 기본 동작을 확인해 보겠습니다.

예제 코드

lis = ['tutorialspoint', 786, 34.56, 2+3j]

# 리스트의 요소 출력하기
for i in lis:
    print(i)

# 리스트 끝에 새로운 요소 추가하기
lis.append('python')

# 리스트의 길이 출력하기
print("리스트의 길이:", len(lis))

# 리스트의 마지막 요소 제거하기
lis.pop()
print(lis)

실행 결과

tutorialspoint
786
34.56
(2+3j)
리스트의 길이: 5
['tutorialspoint', 786, 34.56, (2+3j)]

append() 메서드로 요소를 추가했기 때문에 길이가 5가 되었고, pop()으로 마지막 요소가 제거된 것을 확인할 수 있습니다.

2. 튜플(Tuple)

튜플 역시 Python에서 제공하는 비스칼라 타입입니다. 리스트처럼 순서가 있는 시퀀스이지만, 튜플은 불변(immutable)이라는 결정적인 차이점이 있습니다. 즉, 한 번 생성된 튜플은 요소를 추가, 삭제, 수정할 수 없습니다.

튜플의 요소는 괄호() 안에 쉼표로 구분하여 작성하며, 서로 다른 타입의 요소도 함께 담을 수 있습니다. 데이터를 읽기 전용으로 보관해야 하는 경우 튜플이 유용합니다.

예제 코드

tup = ('tutorialspoint', 786, 34.56, 2+3j)

# 튜플의 요소 출력하기
for i in tup:
    print(i)

# 튜플은 불변이므로 아래 코드는 에러 발생
# tup.append('python')   # AttributeError!
# tup.pop()              # AttributeError!

# 튜플의 길이 출력하기
print("튜플의 길이:", len(tup))

실행 결과

tutorialspoint
786
34.56
(2+3j)
튜플의 길이: 4

주석 처리된 append()pop()을 실행하면 AttributeError가 발생하는데, 이것이 바로 튜플이 불변 자료 구조라는 것을 보여주는 예시입니다.

3. 셋(Set)

셋은 중복을 허용하지 않는 순서 없는 객체의 집합입니다. 모든 요소를 중괄호({})로 감싸 생성할 수 있으며, set() 함수를 이용한 타입 변환으로도 만들 수 있습니다.

셋의 요소는 반드시 불변 타입이어야 합니다. 셋은 인덱싱, 슬라이싱, 연결(concatenation), 반복(replication) 연산을 지원하지 않지만, for 루프를 통해 요소를 순회할 수 있습니다.

예제 코드

set_ = {'tutorial', 'point', 'python'}

# 셋의 요소 출력하기
for i in set_:
    print(i, end=" ")
print()

# 최댓값과 최솟값 출력하기
print(max(set_))
print(min(set_))

# 셋의 크기 출력하기
print(len(set_))

실행 결과

tutorial point python
tutorial
point
3

셋은 중복을 허용하지 않고 순서가 없기 때문에, 같은 요소를 여러 번 넣어도 하나만 저장되며 출력 순서는 실행 시마다 달라질 수 있습니다.

4. 딕셔너리(Dictionary)

딕셔너리는 키(key)와 값(value)의 쌍으로 이루어진 순서 없는 자료 구조입니다. 키는 문자열, 숫자 등 어떤 불변 타입이든 사용할 수 있으며, 딕셔너리 역시 중괄호({})로 정의합니다.

저장된 값은 각각 고유한 키를 통해 빠르게 접근할 수 있다는 점이 리스트와 큰 차이입니다.

예제 코드

# 빈 딕셔너리 생성하기
d = dict()

# 키-값 쌍 추가하기
d['tutorial'] = 786
d['point'] = 56

# 최솟값과 최댓값 키 출력하기
print(min(d), max(d))

# 키만 출력하기
print(d.keys())

# 값만 출력하기
print(d.values())

실행 결과

point tutorial
dict_keys(['tutorial', 'point'])
dict_values([786, 56])

keys()values() 메서드를 사용하면 딕셔너리의 키와 값을 각각 손쉽게 조회할 수 있습니다.

마무리

이 글에서는 Python에 내장된 4가지 핵심 데이터 구조의 특징과 구현 방법을 알아보았습니다. 각 구조를 간단히 요약하면 다음과 같습니다.

  • 리스트: 순서 O, 변경 가능, 다양한 타입 저장 가능
  • 튜플: 순서 O, 변경 불가능, 읽기 전용 데이터에 적합
  • : 순서 X, 중복 허용 안 함, 집합 연산에 유용
  • 딕셔너리: 키-값 쌍 구조, 키로 빠른 조회 가능

각 데이터 구조의 특성을 정확히 이해하고 상황에 맞게 선택하면, 더욱 효율적이고 가독성 좋은 Python 코드를 작성할 수 있습니다.