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

파이썬 내장 데이터 구조 완벽 정리: 리스트·딕셔너리·튜플·세트

파이썬(Python)은 int, float, complex, str, bool과 같은 단순 내장 타입을 기본으로 제공합니다. 여기에 더해 리스트(List), 딕셔너리(Dict), 튜플(Tuple), 세트(Set)와 같은 복합 자료형도 함께 제공하여 다양한 데이터를 효율적으로 다룰 수 있습니다.

리스트(List)

리스트는 파이썬에서 가장 많이 사용되는 자료형 중 하나로, 여러 객체를 모아 놓은 순서가 있고(ordered) 변경 가능한(mutable) 컬렉션입니다. 대괄호 []를 사용하여 작성합니다.

리스트 생성 방법

my_list = ["car", "bus", "truck"]
print(my_list)

리스트 항목 접근 방법

인덱스 번호를 참조하여 리스트 항목에 접근할 수 있습니다. 아래 예제는 인덱스 1(두 번째) 위치의 항목을 반환합니다.

my_list = ["car", "bus", "truck"]
print(my_list[1])   # bus 출력

리스트 값 변경 방법

인덱스 번호를 사용하면 특정 항목의 값을 변경할 수 있습니다.

my_list = ["car", "bus", "truck"]
my_list[2] = "van"   # 리스트는 변경 가능(mutable)
print(my_list)

리스트 반복문 처리

for 루프를 사용하여 리스트의 각 항목을 순회할 수 있습니다.

my_list = ["car", "bus", "truck"]
for x in my_list:
    print(x)

리스트 메서드

파이썬은 리스트에 바로 사용할 수 있는 다양한 내장 메서드를 제공합니다.

번호메서드 및 설명
1

append()

리스트 끝에 요소를 추가합니다.

2

clear()

리스트의 모든 요소를 제거합니다.

3

copy()

리스트의 복사본을 반환합니다.

4

count()

지정된 값을 가진 요소의 개수를 반환합니다.

5

extend()

다른 리스트(또는 반복 가능한 객체)의 요소들을 현재 리스트 끝에 추가합니다.

6

index()

지정된 값을 가진 첫 번째 요소의 인덱스를 반환합니다.

7

insert()

지정된 위치에 요소를 삽입합니다.

8

pop()

지정된 위치의 요소를 제거하고 반환합니다.

9

remove()

지정된 값을 가진 항목을 제거합니다.

10

reverse()

리스트의 순서를 뒤집습니다.

11

sort()

리스트를 오름차순으로 정렬합니다.

딕셔너리(Dict)

딕셔너리는 키(key)와 값(value) 쌍으로 데이터를 저장하는 추상 자료형입니다. 리스트와 달리 위치(인덱스)가 아닌 키를 기준으로 데이터에 접근하며, 모든 키는 고유한 값과 연결됩니다. 이러한 구조 때문에 딕셔너리는 연관 배열(Associative Array)이라고도 불립니다.

예제

>>> student = {"Aadrika": 1, "Adwaita": 9, "Sakya": 11, "Sanj": 22}

학생 기록을 저장할 때 학생 이름을 인덱스처럼 활용할 수 있습니다.

>>> student["Adwaita"]
9

위 예제에서 딕셔너리 이름은 student이며, 첫 번째 요소가 "Aadrika", 두 번째 요소가 "Adwaita"처럼 보일 수 있지만, 딕셔너리는 인덱스 순서가 아니라 키를 통해 접근한다는 점이 리스트와 다릅니다.

요소 추가하기

>>> student["Krishna"] = 111
>>> student
{'Aadrika': 1, 'Adwaita': 9, 'Sakya': 11, 'Sanj': 22, 'Krishna': 111}

이처럼 빈 딕셔너리에서 시작해 하나씩 값을 추가하는 방식으로 데이터를 쌓아갈 수 있습니다.

튜플(Tuple)

튜플은 쉼표(,)로 구분된 객체들의 집합입니다. 인덱싱 방식은 리스트와 유사하지만, 가장 큰 차이점은 변경 불가능(immutable)하다는 것입니다. 또한 튜플은 비교와 해싱이 가능하기 때문에 정렬이 쉽고, 딕셔너리의 키로도 사용할 수 있습니다.

튜플 생성 방법

my_tuple = ("car", "bus", "truck")
print(my_tuple)

튜플 항목 접근 방법

인덱스 번호를 참조하여 튜플 항목에 접근할 수 있습니다. 아래 예제는 인덱스 1 위치의 항목을 반환합니다.

my_tuple = ("car", "bus", "truck")
print(my_tuple[1])   # bus 출력

튜플 값 변경 방법

튜플은 한 번 생성되면 값을 변경할 수 없습니다. 즉, 튜플은 불변(immutable)입니다.

my_tuple = ("car", "bus", "truck")
my_tuple[3] = "van"
# TypeError 발생: 튜플은 값을 변경할 수 없음

튜플 반복문 처리

for 루프를 사용하여 튜플의 각 항목을 순회할 수 있습니다.

my_tuple = ("car", "bus", "truck")
for x in my_tuple:
    print(x)

튜플 메서드

파이썬은 튜플에 사용할 수 있는 두 가지 내장 메서드 count()와 index()를 제공합니다.

count()튜플에서 지정된 값이 나타나는 횟수를 반환합니다.
index()튜플에서 지정된 값을 검색하여 해당 위치(인덱스)를 반환합니다.

세트(Set)

수학에서 집합(set)은 서로 구별되는 객체들의 모임입니다. 예를 들어 2, 4, 6이라는 세 개의 숫자는 개별적으로는 서로 다른 객체이지만, 함께 묶어 생각하면 크기가 3인 하나의 집합 {2, 4, 6}을 이룹니다.

파이썬에서 세트는 매우 유용합니다. 특정 요소가 세트에 존재하는지 여부를 매우 빠르게 확인할 수 있도록 최적화되어 있기 때문입니다.

세트 연산 메서드

1. add(x) 메서드: 해당 요소가 세트에 없으면 추가합니다.

A = {"AA", "BB", "CC"}
A.add("DD")   # A 세트에 DD 추가

2. union(s) 메서드: 두 세트의 합집합을 반환합니다. '|' 연산자를 사용할 수도 있습니다.

A = {"AA", "BB", "CC"}
B = {"MM", "NN"}
Z = A.union(B)
# 또는
Z = A | B
# Z에는 A와 B의 모든 요소가 포함됨

3. intersection(s) 메서드: 두 세트의 교집합을 반환합니다. '&' 연산자도 사용할 수 있습니다.

S = A.intersection(B)
# S에는 A와 B의 공통 요소가 포함됨

4. difference(s) 메서드: 첫 번째 세트에는 속하지만 두 번째 세트에는 속하지 않는 요소들의 집합을 반환합니다. '-' 연산자를 사용할 수 있습니다.

S = A.difference(B)
# 또는
S = A - B
# S에는 A에는 있고 B에는 없는 모든 요소가 포함됨

5. clear() 메서드: 세트 전체를 비웁니다.

B.clear()   # B 세트 비우기

세트 연산자

세트와 프로즌세트(frozenset)는 다음 연산자를 지원합니다.

key in s# 포함 여부 검사
key not in s# 미포함 여부 검사
s1 == s2# 두 세트가 같음
s1 != s2# 두 세트가 같지 않음
s1 <= s2# s1이 s2의 부분집합
s1 < s2# s1이 s2의 진부분집합
s1 >= s2# s1이 s2의 상위집합(슈퍼셋)
s1 > s2# s1이 s2의 진상위집합
s1 | s2# 두 세트의 합집합
s1 & s2# 두 세트의 교집합
s1 - s2# 첫 번째 세트에는 있고 두 번째 세트에는 없는 요소들의 집합
s1 ^ s2# 두 세트 중 정확히 하나에만 속하는 요소들의 집합(대칭 차집합)