jh.nrtv

[자료구조] Python의 자료구조 - list, tuple, set, dictionary( =Hash Table) 본문

알고리즘, 자료구조

[자료구조] Python의 자료구조 - list, tuple, set, dictionary( =Hash Table)

wlgus3 2023. 9. 9. 17:48

Python에서 주로 사용하는 자료구조 4가지를 정리한다. 

 

 

✅ List  , Tuple

list = [a,b,c,d]

tuple= (a,b,c,d)
list=[1,2,3]

# 끝에 추가-> .append(value)
list.append(4) #>>> list=[1, 2, 3, 4]

# 원하는 위치에 삽입-> .insert(index , value)
list.insert(1, 5) #>>> list=[1, 5, 2, 3, 4]

# 데이터 삭제->  del listname(value)
del list[3]	#>>> list= [1, 5, 2, 4]

# 최대 , 최소-> max(listname) , min(listname)
print(max(list))	#>>>5
print(min(list))	#>>>1

 

list는 배열(Array)와 비슷하다고 생각하면 된다. 따라서 아이템을 검색하는 데에 걸리는 시간이 O(n)으로 선형적으로 증가한다.

 

list와 tuple은 모두 Array와 비슷하며 순서가 있는 자료구조이지만, tuple은 immutable 하므로 수정이 불가능하다.

따라서 한 번 데이터를 구성한 후에 변경할 필요가 없을 때에 tuple을 사용한다. 

추가적으로 tuple이 list에 비해서 메모리를 적게 사용한다. 

 

 

비교항목 list tuple
기호 [] ()
변경 mutable immutable
인덱싱 지원 지원
슬라이싱 지원 지원
삭제 지원 지원하지 않음
순서 있음 있음

 

✅ Set

Set은 list, tuple과 다르게 순서가 없으며 , 가변적이고, 중복되는 아이템을 저장할 수 없다. 

>>> a = set()
>>> type(a)
<class 'set'>
>>> a = {1,2,3}
>>> type(a)
<class 'set'>

# 중복이 없다. 
>>> a = set([0,0,0,1,2,3])
>>> a
{0, 1, 2, 3}

# 집합연산 가능 
>>> a = set([1,2,3,4])
>>> b = set([3,4,5,6])

#교집합 
>>> a & b
{3, 4}

#합집합
>>> a | b
{1, 2, 3, 4, 5, 6}

#차집합
>>> a - b
{1, 2}

#add() remove() update()
>>> a.add(5)
>>> a.add(6)
>>> a
{1, 2, 3, 4, 5, 6}

>>> a.remove(3)
>>> a
{1, 2, 4, 5, 6}

>>> a.update([5,6,7,8,9])
>>> a
{1, 2, 4, 5, 6, 7, 8, 9}

 

✅ Dictionary

Dictionary 는 javascript의 Object와 형태가 비슷하다. 

python의 Dictionary는 Hash Table로 구현되어 있다.

Hash Table은 key-value 쌍으로 구현되어 있으며 hash function h를 활용해서 (key, value)를 저장한다. 

key 의 값이 k라고 했을 때, h(k)의 index에 (key,value)를 저장한다. 

따라서 key에 대한 in 연산자의 시간복잡도가 O(1)이다.  -> 매우 효율적인 구조이기에 쉽게 생각하면 key를 list의 index로 생각하면 편하다.

 

student_info = {}
student_info[202311] = "john"
student_info[202312] = "chriss"
student_info[202324] = "mike"
student_info[202328] = "tom"

in 연산자

만약 key가 존재하면 True 반환, 존재하지 않으면 False를 반환한다. 

if 202311 in student_info:
		print("학생이 존재합니다")
else:
		print("학생이 존재하지 않습니다")

 

Dictionary 관련 함수 

dictionary.items(). -> key, value 모두에 접근

for student_id, name in student_info.items():
    print(student_id, name)

 

dictionary.keys() ->key들에 접근

for student_id in student_info.keys():
    print(student_id)

 

dictionary.values()  -> value들에 접근

for name in student_info.values():
    print(name)

 

dictionary.get() ->key에 해당하는 value를 가져올 때 사용

 

print(student_info.get(202311))

 


참조

 

 

 

[Python] 파이썬 자료 구조 - set

파이썬의 set() 은 반복 가능하고, 가변적이며, 중복 요소가 없고, 정렬되지 않은 데이터 타입이다.{}로 묶였다고 해서 dict()와 헷갈리지 말자. 키와 값이 없기 때문에 dict()가 아니다.set() 의 가장

velog.io

 

 

01-3 파이썬 자료구조

[TOC] ## 자료구조 다음 파이썬 코드의 의미에 대해 해석해봅시다. 여러 번 설명해 드리지만 '='이 있으므로 오른쪽을 먼저 살펴보면 4라는 정수 타입의 값이 메모리에 할…

wikidocs.net