일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 객체지향
- 자바스크립트
- JavaScript
- 코드스테이스
- 계산기
- OOP
- WAI-ARIA
- cta버튼
- 회고
- 코드스테이츠
- 원시자료형
- self reliance
- 프로토타입
- CDD
- 개발자
- codestate
- JS
- Router
- Prototype
- frontend
- cta button
- 호스트인식
- Javascript #코드스테이츠
- 프론트엔드
- condestates
- 참조자료형
- css in js
- codestates
- html
- css
- Today
- Total
jh.nrtv
[자료구조] Python의 자료구조 - list, tuple, set, dictionary( =Hash Table) 본문
[자료구조] Python의 자료구조 - list, tuple, set, dictionary( =Hash Table)
wlgus3 2023. 9. 9. 17:48Python에서 주로 사용하는 자료구조 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
'알고리즘, 자료구조' 카테고리의 다른 글
[자료구조] 해시 테이블이란? (0) | 2023.12.16 |
---|---|
[자료구조] 재귀 (Recursion) , Tree , 트리순회 (BFS , DFS) (0) | 2023.09.19 |
[자료구조] Queue & Stack - Python으로 구현하기 (0) | 2023.09.08 |
[자료구조] Linked List- Python으로 구현하기 (0) | 2023.08.13 |
[알고리즘] 재귀 (recursion) (0) | 2022.12.15 |