대학생 쩡딱구리

0. 파이썬의 자료구조 본문

STUDIES/DATA STRUCTURE

0. 파이썬의 자료구조

쩡딱구리 2020. 10. 10. 23:52

지난 글에서 계속된다.

 

0. 알고리즘과 자료 구조

1. 알고리즘이란?  "유튜브 알고리즘이 나를 꽤 괜찮은 곳으로 데리고 왔다."  2PM의 '우리 집' 유튜브 영상에 달린 베스트 댓글 중 하나다. 이 예시와 같이 우리는 알게 모르게 알고리즘이라는 말

jjeongttakgoori.tistory.com

1. 파이썬의 built-in 데이터 타입

 파이썬은 연산의 특성을 고려한 자료구조로 구성되어 있다! 자세한 것은 아래의 표를 참고하면 될 것 같다.

구분 이름 클래스 설명 불변성질
(Immutable)
Basic Data
Types
부울 bool 부울 값(Boolean) O
정수 int 정수(Integer) O
실수 float 실수(float-point number) O
Sequence
Types
리스트 list 객체들의 순열(mutable) X
튜플 tuple 객체들의 순열(Immutable) O
스트링 str 문자열(string) O
Set/Dictionary
Types
집합 set 객체들의 집합(mutable) X
불변집합 frozenset 객체들의 집합(Immutable) O
딕셔너리 dict (key, value) 맵핑 X
  • 불변성질(Immutable): 값이 초기화된 이후로 바뀌지 않는 성질

2. 타입별 비교

  • Sequence Types: 순서 정보가 중요, 요소를 순서 관계에 따라 빠르게 접근하는 것이 중요.

 Sequence Types: 배열 기반 순서 데이터 관리

     - 리스트(List): Immutable한 객체들을 순서대로 추가/삭제/변경 가능. 인덱스로 접근 가능

                       동적 배열로 레퍼런스 관리.

     - 튜플(Tuple): 불변 성질 갖는 리스트. 인덱스로 접근 가능. 배열 형식이지만 리스트보다 효율적, 간소화됨.

     - 스트링(str):  문자열을 문자 순서대로 갖는 자료 구조. 인덱스로 접근 가능. 컴팩트 배열 형태로 관리

 

  • Set/Dictionary Types: 순서 정보가 없음, Search/Insert/Delete 연산을 빠르게 하는 것이 중요

Set/Dictionary Types: 해시 테이블 기반 데이터 관리

     - 집합(Set):                 수학적 의미의 집합, Immutable한 요소들이 중복되지 않고 순서 정보 없음.

     - 불변집합(Frozenset):  불변 성질을 갖는 집합, 따라서 set of frozensets 형태는 가능

     - 딕셔너리(dict):          (key, value) 쌍을 갖는 집합으로 key를 value에 맵핑,

                                     value를 저장하기 위한 별도의 저장소가 필요.

 

3. 객체 생성, 출력해보기

# 리스트
li = ["김진홍", "이주란", "김민정", "김민서"]
print(li)
print(type(li))

# 튜플
tu = ('a', 'b', [1, 2, 3, 4])
print(tu)
print(tu[0:1])
print(type(tu))

# 스트링
string = "Life is too short. You need python."
print(string)
print(string[:4])
print(type(string))

# 집합
# A조에 이, 김, 최, 박의 네 명이, B조에 정, 최, 윤의 세 명이 있다고 할 때 두 집합 전체를 출력하고 A,B조 모두에 소속된 사람은 누구인지 출력하시오.
group_A = {'Lee', 'Choi', 'Kim', 'Park'}
group_B = {'Jeong', 'Choi', 'Yoon'}
print(group_A)
print(group_B)
print(group_A & group_B)

print(type(group_A))
print(type(group_B))

# 불변집합
phrase = frozenset({'자료구조', '컴퓨터구조', '확률과 통계', '컴퓨팅 사고'})
print(phrase)
print(type(phrase))

# 딕셔너리
dic = {'name': 'Minjeong', 'age': 21, 'gender': 'female'}
print(dic)
print(dic['name'])
print(dic['age'])
print(dic['gender'])
print(type(dic))
  •  print(type(객체 이름))은 객체의 클래스를 출력하는 문장이다.

 이 코드를 실행했을 때의 실행 결과는 아래와 같다.

> ['김진홍', '이주란', '김민정', '김민서']
<class 'list'>
('a', 'b', [1, 2, 3, 4])
('a',)
<class 'tuple'>
Life is too short. You need python.
Life
<class 'str'>
{'Lee', 'Park', 'Choi', 'Kim'}
{'Jeong', 'Yoon', 'Choi'}
{'Choi'}
<class 'set'>
<class 'set'>
frozenset({'자료구조', '컴퓨팅 사고', '확률과 통계', '컴퓨터구조'})
<class 'frozenset'>
{'name': 'Minjeong', 'age': 21, 'gender': 'female'}
Minjeong
21
female
<class 'dict'>

'STUDIES > DATA STRUCTURE' 카테고리의 다른 글

1-3. Big-O 표기법  (0) 2020.10.14
1-2. 시간 복잡도 분석  (0) 2020.10.13
1-1. 알고리즘 분석  (0) 2020.10.13
0. 알고리즘과 자료 구조  (0) 2020.10.10
자료구조 복습을 들어가며  (0) 2020.10.10