본문 바로가기
AI Developer/Python

[파이썬] 파이썬 자료 구조

by 성 언 2023. 1. 12.

인공지능 AI 기초 다지기 강의와 자료구조 과목 학습 후 정리한 포스팅 입니다.

이번 포스팅에서는 파이썬의 자료구조에 대해 학습힙니다.

 

I) 스택 (stack)

 

- 나중에 넣은 데이터를 먼저 반환하도록 설계된 메모리 구조
- Last In First Out (LIFO)
- Data의 입력을 Push, 출력을 Pop이라고 함

 

- 리스트를 사용하여 스택 구조를 구현 가능
- push를 append(), pop을 pop()를 사용

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

a.pop()
20

b = a.pop()
print(b)
10

cf) 스택 구조를 활용한 역순 출력 예제

word = input("문자를 입력하시오: ")
word_list = list(word) # string to List
for i in range(len(word_list)):
	print(word_list.pop()) # 스택 List에서 하나씩 빼면서 출력

II) 큐 (queue)

 

- 먼저 넣은 데이터를 먼저 반환하도록 설계된 메모리구조 

- First In First Out (FIFO)
- Stack과 반대되는 개념

 

- 파이썬은 리스트를 사용하여 큐 구조를 활용 

- put를 append(), get을 pop(0)를 사용

queue = [1, 2, 3, 4, 5]
queue.append(10)
queue.append(20)

queue.pop(0)
1

b = queue.pop(0)
print(b)
2

 

III) 튜플 (tuple)

- 값의 변경이 불가능한 리스트
-선언시“[]”가 아닌“()”를사용
- 리스트의 연산, 인덱싱, 슬라이싱 등을 동일하게 사용

tuple = (1, 2, 3)
print (t + 2, t * 2)
(1, 2, 3, 1, 2, 3) (1, 2, 3, 1, 2, 3)

len(t)
3

t[1] = 4
--> 값 변경 시 Error 발생

왜 쓸까?
- 프로그램을 작동하는 동안 변경되지 않은 데이터의 저장
Ex) 학번, 이름, 우편번호 등등
- 함수의 반환 값등 사용자의 실수에 의한 에러를 사전에 방지

tuple = (1) # 정수로 인식
tuple = (1, ) # 값이 하나인 Tuple은 반드시 "," 붙일 것

 

IV) 집합 (set)

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

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

s = set([1, 2, 3, 1, 2, 3]) # set 함수를 사용 1, 2, 3 집합 객체 생성, a = {1, 2, 3, 4, 5} 도 가능
s
{1, 2, 3}

s.add(1)
s
{1, 2, 3}

s.remoce(1)
s
{2, 3}

s.update([1, 4, 5, 6, 7])
s
{1, 2, 3, 4, 5, 6, 7}

s.discard(3)
s
{1, 2, 3, 4, 5, 6, 7}

s.clear()    # 모든 원소 삭제

- 수학에서 활용하는 다양한 집합연산 가능

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

s1.union(s2)   # s1 과 s2의 합집합
{1, 2, 3, 4, 5, 6, 7}
s1 | s2
{1, 2, 3, 4, 5, 6, 7} 


s1.intersection(s2) # s1 과 s2의 교집합
{3, 4, 5}
s1 & s2     
{3, 4, 5}


s1.difference(s2) # s1 과 s2의 차집합
{1, 2}
s1 - s2   
{1, 2}

V) 사전 (dictionary)

- 데이터를 저장 할 때는 구분 지을 수 있는 값을 함께 저장 예) 주민등록 번호, 제품 모델 번호
- 구분을 위한 데이터 고유 값을 Identifier 또는 Key 라고함 

- Key 값을 활용하여, 데이터 값(Value)를 관리함

 

- key와 value를 매칭하여 key로 value를 검색
- 다른 언어에서는 Hash Table 이라는 용어를 사용
- {Key1:Value1, Key2:Value2, Key3:Value3 ...} 형태

student_info = {12214376: 'SeongEon',
12214334: 'JiYong', 12213332: 'JaeHong'}

student_info[12214376]
'SeongEon'
student_info[12214376] = 'Haeun' # 변경 가능
country_code = {} # Dict 생성, country_code = dict() 도 가능
country_code = {"America": 1, "Korea": 82, "China": 86, "Japan": 81} 


country_code
{'America': 1, 'China': 86, 'Korea': 82, 'Japan': 81}


country_code.items() # Dict 데이터 출력
Dict_items([('America', 1), ('China', 86), ('Korea', 82), ('Japan', 81)]) 


country_code.keys() # Dict 키 값만 출력
Dict_keys(["America", "China", "Korea", "Japan"])


country_code["German"]= 49 # Dict 추가
country_code
{'America': 1, 'German': 49, 'China': 86, 'Korea': 82, 'Japan': 81}


country_code.values() # Dict Value만 출력
dict_values([1, 49, 86, 82, 81])

VI) collections 모듈

- List, Tuple, Dict에 대한 Python Built-in 확장 자료 구조(모듈)
- 편의성, 실행 효율 등을 사용자에게 제공함
- 아래의 모듈이 존재함

- 등장하면 추가로 찾아봐서 공부할 것

from collections import deque
from collections import Counter
from collections import OrderedDict
from collections import defaultdict
from collections import namedtuple

 

<Summary>

- 스택, 큐, 튜플, 집합, 사전

- collnections 모듈

 

*유의사항

- 파이썬을 공부 중인 인공지능공학과 학부생이 공부하여 남긴 정리입니다.

- 정확하지 않거나, 틀린 점이 있다면 댓글로 알려주시면 감사하겠습니다.

 

 

 

 

댓글