<선형 자료구조>
: 자료들이 일렬로 나열되어 선을 이룸
1. 집합에 순서가 있다
2. indexing 가능 " list[index], tuple[index] "
3. list, tuple
<비선형 자료구조>
: 자료들이 위치를 갖지 않고 bucket에 저장됨
1. 위치를 갖지 않기 때문에 순서가 없음
2. indexing 할 수 없음
3. look up 가능 " value in set, value in dict "
4. 중복값을 허용하지 않음
5. set, dict
언제 사용?
1. 중복된 값을 골라내야 할 때
2. 빠른 look up 해야 할 때
3. 자료의 순서가 상관없을 때
"4가지 자료 구조 모두 문자형, 숫자형 혼용 가능"
"순서가 있는 집합: list & tuple"
[ list ]
- [ ] 형태로 표현
list 생성
list = [1, 2, 3, 4]
list
# [1, 2, 3, 4]
list 값 추가
1. append 함수 사용 " list.append(value) "
2. 값은 하나씩만 추가 가능 => 한 번에 여러 개 추가하려 하면 에러 발생
list.append(5)
list
# [1, 2, 3, 4, 5]
list.apped(6,7)
# 에러 출력
list 값 제거
같은 값이 여러개 있을 경우 앞에서 부터 제거 됨
list.append(1)
list
# [1, 2, 3, 4, 5, 1]
list.remove[1]
list
# [2, 3, 4, 5, 1]
list indexing
1. 왼쪽에서 오른쪽으로 0부터 시작
2. - 값으로 indexing 할 경우 오른쪽에서 왼쪽으로 -1부터 시작
list
# [2, 3, 4, 5, 1]
list[0]
# 2
list[4]
# 1
list[-1]
# 1
list[-5]
# 2
특정 index의 값 변경
" list[ 값 바꿀 index ] = 대체할 value "
list
# [2, 3, 4, 5, 1]
list[4] = 6
list
# [2, 3, 4, 5, 6]
( tuple )
- ( ) 형태로 표현
읽기 전용으로 생성됨 => 수정할 수 없음
tuple 생성
tuple= (1, 2, 3, 4)
tuple
# (1, 2, 3, 4)
값 수정 불가능
값 추가, 삭제, 대체 모두 불가능
tuple
# (1, 2, 3, 4)
tuple.append(5)
# 에러 출력
tuple.remove(1)
# 에러 출력
tuple[0] = 0
# 에러 출력
"순서가 없는 집합: set & dict"
1. indexing 불가
2. 중복을 허용하지 않음
{ set }
- { } 형태로 표현
set 생성 및 추가
1. add 함수 이용해 값 추가 " set.add(value) "
+) 집합의 형태 확인 함수: " type(집합 이름) "
set = {1, 2, 3, 4}
type(set)
# <class 'set'>
set.add(5)
set
# {1, 2, 3, 4, 5}
set 값 제거
set
# {1, 2, 3, 4, 5}
set.add(6)
set
# {1, 2, 3, 4, 5, 6}
set.remove(6)
set
# {1, 2, 3, 4, 5}
indexing 불가
set[0]
# 에러 출력
lookup 기능
set
# {1, 2, 3, 4, 5}
1 in set
# True
0 in set
# False
{ dict }
- { } 형태로 표현
1. 사전형 집합
2. key 값 이용
key 값
1. 문자형과 숫자형 혼용 가능
2. 중복될 수 없음 but 수정 가능
=> 만일 중복된 key가 있으면 새로 넣어준 key의 value가 원래 있던 value 대체
dict 생성 방법 1
1. " 변수 = dict() "를 통해 dict 형태의 변수/ 집합 생성
2. 변수에 자료 값 저장 " dict[key 값] = value "
dict_1 = dict()
type(dict_1)
# <class 'dict'>
dict_1
# {}
dict_1[0] = 1
dict_1
# {0: 1}
key & value
1. 둘 다 문자형 가능
2. 한 번에 여러 개 value 줄 수 있음
dictt = dict()
dictt['key'] = 'value1','value2','value3'
dictt
# {'key': ('value2', 'value2', 'value3') }
dict 생성 방법 2
1. 변수에 dict 형 집합을 바로 집어넣음
+) 아래 예시에서 정렬된 순서를 보면 내가 넣은 순서와 다른 것 확인 가능 => 순서 없는 집합
dict_2 = { 'City': 'Seoul', 'job': 'engineer' }
dict_2
# {'job': 'engineer', 'City': 'Seoul'}
dict생성 방법 3
1. 변수에 dict 함수를 사용해 바로 생성 => " 변수 = dict( key1 = value1, key2 = value2... ) "
+) dict 집합이 value로써 들어갈 수도 있음
=> 아래 예시의 " 'address': {'country': 'Korea', 'City': 'Seoul'} " 확인
dict_3 = dict(name=['Hong','Gil-dong'], job= 'engineer', address= {'country' : 'Korea', 'City' : 'Seoul'})
dict_3
# {'address': {'country': 'Korea', 'City': 'Seoul'}, 'job': 'engineer', 'name': ['Hong', 'Gil-dong']}
집합 정렬 확인
내가 넣어준 값의 순서와 return 된 집합의 값 순서가 다름 => 순서가 없음
but, 집합을 보면 '숫자 -> 소문자 -> 대문자' 순으로 정렬되는 것 확인 가능
dict_2
# {'job': 'engineer', 'City': 'Seoul'}
dict_2['country'] = 'Korea'
dict_2
# {'country': 'Korea', 'job': 'enginner', 'City': 'Seoul'}
dict_2[0] = 0
dict_2
# {0: 0, 'country': 'Korea', 'job': 'enginner', 'City': 'Seoul'}
반응형
'Python (Data) > 이론' 카테고리의 다른 글
[python 자료형] Boolean type(불리언 타입)과 논리 연산자 (0) | 2021.02.04 |
---|---|
[python] 패키지, 모듈, 함수, 클래스 개념 정리 (0) | 2020.11.25 |
[python] List Comprehension- 코드 한줄로 기존 list에서 원하는 조건을 충족하는 값만으로 새로운 list 만들기 (0) | 2020.11.25 |
[python] for 반복문 (0) | 2020.11.25 |
댓글