Programming/Python

[Python] 기본 데이터 구조

owls 2023. 3. 6. 20:07
728x90

Stack

- LIFO(Last In First Out) : 나중에 넣은 데이터를 먼저 반환하도록 설계된 메모리 구조

- list를 사용하여 스택 구조 구현 가능

  push : appen()

  pop : pop()

a = [1, 2, 3, 4, 5]
a.append(10)	#[1, 2, 3, 4, 5, 10]
a.pop() 	  #[1, 2, 3, 4, 5]

Queue

- FIFO(First In First Out) : 먼저 넣은 데이터를 먼저 반환하도록 설계된 메모리 구조

- list를 사용하여 큐 구조 구현 가능

  put : append()

  get : pop(0)

a = [1, 2, 3, 4, 5]
a.append(10)	# [1, 2, 3, 4, 5]
a.pop(0)		# 1

Deque

- stack 과 queue를 지원하는 모듈

- list에 비해 효율적인 (빠른) 자료 저장 방식

from collections import deque

deque_list = deque()
for i in range(5):
    deque_list.append(i)  #deque([0, 1, 2, 3, 4])
deque_list.appendleft(10)
print(deque_list)	#deque([10, 0, 1, 2, 3, 4])

deque_list.popleft()
print(deque_list)	#deque([0, 1, 2, 3, 4])

deque_list.pop()
print(deque_list)	#deque([0, 1, 2, 3])

Tuple

- 값의 변경이 불가능한 리스트

- 선언 : ()

d = ( 1, 2 ,3)

namedtuple

- tuple형태로 data구조체를 저장하는 방법

- 저장되는 data의 variable을 사전에 지정해서 저장함

 

List

- 값의 변경이 가능한 리스트

- 선언 : [ ]

a = [1, 2, 3, 4, 5]

Set

- 값을 순서없이 저장, 중복 불허하는 자료형

- set객체 선언을 이용하여 객체 생성

s1 = set([1,2,3,4,5])

-합집합

s1 = set([1,2,3,4,5])
s2 = set([1,2,6,7,8])
s1.union(s2)	#{1, 2, 3, 4, 5, 6, 7, 8}

-교집합

s1 = set([1,2,3,4,5])
s2 = set([1,2,6,7,8])
s1.intersection(s2)	#{1, 2}

 

-차집합

s1 = set([1,2,3,4,5])
s2 = set([1,2,6,7,8])
s1.difference(s2)	#{3,4,5}

Dictionary

- Java의 Hash Table

- (Key, Value) 쌍으로 저장

- {Key1:Value1, Key2:Value2 } 형태

hashTable = { 'a':5, 'z':7, 'e' : 1}

-Dict 데이터 출력

hashTable.items() #dict_items([('a', 5), ('z', 7), ('e', 1)])

 

-Dict 키 값만 출력

hashTable.keys()  # dict_keys(['a', 'z', 'e'])

 

-Dict 데이터만 출력

hashTable.values()	#dict_values([5, 7, 1])

 

-Dict 추가

hashTable['d'] = 9

 

OrderedDic

- 데이터를 입력한 순서대로 dict 반환

 

Defaultdict

- Dict type의 값에 기본 값을 지정, 신규 값 생성 시 사용하느 방법

 

Counter

-dequnce type의 data element들의 갯수를 dict형태로 반환

 

728x90