대학생 쩡딱구리
0. 파이썬의 자료구조 본문
지난 글에서 계속된다.
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: 순서 정보가 중요, 요소를 순서 관계에 따라 빠르게 접근하는 것이 중요.
- 리스트(List): Immutable한 객체들을 순서대로 추가/삭제/변경 가능. 인덱스로 접근 가능
동적 배열로 레퍼런스 관리.
- 튜플(Tuple): 불변 성질 갖는 리스트. 인덱스로 접근 가능. 배열 형식이지만 리스트보다 효율적, 간소화됨.
- 스트링(str): 문자열을 문자 순서대로 갖는 자료 구조. 인덱스로 접근 가능. 컴팩트 배열 형태로 관리
- Set/Dictionary Types: 순서 정보가 없음, Search/Insert/Delete 연산을 빠르게 하는 것이 중요
- 집합(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 |