-
Notifications
You must be signed in to change notification settings - Fork 0
2.02. 내용정리: 2일차
흔한 찐따 edited this page Apr 3, 2022
·
4 revisions
- 순서(차례)가 존재하며, 0부터 시작한다.
- 인덱싱(indexing)과 슬라이싱(slicing)을 통해 값을 가져오거나 수정할 수 있다.
- 모든 타입을 요소로 가질 수 있다.
- 리스트와 동일한 역할을 한다.
- 리스트와의 차이점은 값을 수정할 수 없다.
- 수학에서의 수열(sequence), 벡터(vector)로써 표현하는 튜플과 동일하다.
- 제네레이터(generater) 타입이 별도로 존재하며, 속도가 빠르다.
아직 이것이 뭔지 정확하게 이해가 안 가서 잘 모르겠다. 나중에 더 공부할 필요가 있음.- 제네레이터는 튜플 타입을 컴프리헨션 방식으로 선언하면 생성된다.
-
next
함수를 통해 첫번째부터 값을 하나씩 차례대로 불러낼 수 있다. -
next
함수를 통해 불러낸 첫번째 값은 제네레이터 내에서 값이 삭제되며, 메모리에서 해제된다. - 메모리 주소값을 활용하므로 속도가 굉장히 빠르며, 메모리를 아낄 수 있다는 장점이 있다.
- 수학의 집합과 특징이 동일하다.
- 순서(차례)가 없다.
- 인덱싱과 슬라이싱이 불가능하다.
- 중복된 값을 가질 수 없다.
- 연산자를 통해서 각 집합 타입끼리 교집합(
&
), 합집합(|
), 차집합(-
)을 할 수 있다. - 값을 불러올 때에는 리스트나 튜플로 타입을 변형시켜야 한다.
- ex.
a = {1, 2, 3}
a2 = list(a)
b = a2[0]
print(b)
- 고유한 키(key)와 값(value)을 쌍으로 갖는다.
- 순서(차례)가 없다.
- 사전처럼 키(key)로 값을 불러올 수 있다.
- 키(key)는 고유한 값이기 때문에 중복될 수 없다.
순서가 있는 자료 구조에서 사용할 수 있는 특징이며, 자료의 순서 번호(index; 인덱스)는 0
부터 시작한다.
a = [1, 2, 3, 4, 5]
print(a)
print('a의 0번째 요소:', a[0])
print('a의 3번째 요소:', a[3])
인덱스를 음수로 지정하면 반대의 순서대로 요소를 가져온다.
a = [1, 2, 3, 4, 5]
print(a)
print('a의 -1번째(뒤에서 1번째) 요소:', a[-1])
print('a의 -3번째(뒤에서 3번째) 요소:', a[-3])
- 범위로 인덱싱을 하며,
n1
부터n2 - 1
까지 해당하는 요소들을 가져올 수 있다. - 인덱싱과 마찬가지로 네거티브 슬라이싱도 가능하다.
a = [1, 2, 3, 4, 5]
print(a)
print('a의 1번째 요소부터 3번째까지의 요소들:', a[1:3])
print('a의 -3번째(뒤에서 3번째) 요소부터 -1번째까지(뒤에서 1번째)의 요소들:', a[-3:-1])
- 리스트 (list), 집합 (set), 딕셔너리 (dict) 타입은 값을 추가하거나 수정, 삭제하는 것이 가능하다.
- 튜플 (tuple) 타입과 불변집합 (frozenset) 타입은 값을 변경할 수 없다.
- 리스트 타입끼리의 덧셈 연산자
+
를 통해 값을 추가할 수 있다. -
append
함수를 사용해서 요소 하나를 추가하는 방법도 있다. -
extend
함수를 사용해서 리스트와 리스트끼리 합치는 방법도 존재한다. (덧셈 연산자와 동일) - ex.
a = [1, 2, 3]
b = [4, 5]
c = a + b
print(c)
d = [1, 2, 3]
d.append(4)
d.append(5)
print(d)
a2 = [1, 2, 3]
b2 = [4, 5]
a2.extend(b2)
print(a2)
- 합집합 연산자
|
를 통해서 값을 추가할 수 있다. -
add
함수를 통해 추가할 수 있다. -
update
함수를 통해 집합과 집합을 합치는 방법도 존재한다. (합집합 연산자와 동일) - ex.
a = {1, 2, 3}
b = {4, 5}
c = a | b
print(c)
a2 = {1, 2, 3}
a2.add(4)
a2.add(5)
print(a2)
a3 = {1, 2, 3}
a3.update({4, 5})
print(a3)
- 인덱싱을 통해 새로운 키와 값을 추가한다. (기존에 존재하는 키와 값의 쌍을 수정하는 것도 가능하다.)
-
update
함수를 통해 딕셔너리와 딕셔너리를 합칠 수 있다. (집합 타입과 함수명이 동일하다.) - ex.
a = {'a': 1, 'b': 2}
a['c'] = 3
print(a)
a2 = {'a':1, 'b':2}
a2.update({'c': 3})
print(a2)
- 인덱싱을 통해 해당 위치의 요소를 수정할 수 있다.
- ex.
a = [1, 2, 3, 4, 5]
print(a)
a[0] = 6
print(a)
- 집합 타입은 인덱싱이 불가능하다.
- 따라서 먼저 리스트 타입으로 변형시킨 뒤에 요소를 수정한 후 다시 집합 타입으로 변경해준다.
- ex.
a = {1, 2, 3, 4, 5}
print(a)
a2 = list(b)
a2[0] = 6
a = set(a2)
print(a)
- 리스트와 마찬가지로 키(key)로 인덱싱을 해서 값을 수정할 수 있다.
- ex.
a = {'a': 1, 'b': 2, 'c': 3}
print(a)
a['a'] = 4
print(a)
- 리스트 타입의
remove
함수를 통해 요소를 삭제할 수 있다. -
del
키워드를 통해 삭제하는 것도 가능하다. - 리스트 타입의
pop
함수를 통해 가장 마지막 요소를 삭제하는 것도 가능하다.-
pop
함수는 삭제시킨 마지막 값을 반환한다.
-
- ex.
a = [1, 2, 3, 4, 5]
print(a)
# remove
a.remove(1)
print(a)
# del
del a[0]
print('del:', a)
# pop
b = a.pop()
print(b)
print(a)
- 리스트 타입과 마찬가지로
remove
함수를 통해 해당하는 값을 삭제시킬 수 있다. - ex.
# 집합 (set)
a = {1, 2, 3, 4, 5}
print(a)
# remove
a.remove(3)
print(a)
- 리스트 타입처럼
pop
함수를 사용하면 키에 해당하는 키(key)와 값(value)의 쌍을 삭제시킨다.- 리스트 타입과 달리
pop
함수를 사용하면 삭제된 키에 해당하는 값이 반환된다. -
pop
함수의 인자값에 첫번째는 키(key), 두번째는 키가 존재하지 않을 경우에 반환될 값을 넣어 사용이 가능하다.
- 리스트 타입과 달리
- 리스트 타입과 마찬가지로
del
키워드를 통해 삭제하는 것도 가능하다. -
popitem
함수는 마지막 키와 값을 삭제하고 삭제된 키와 값의 쌍을 튜플 타입으로 반환시킨다. - ex.
a = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
print(a)
# del
del a['a']
print(a)
# pop(key)
b = a.pop('b')
print(b)
print(a)
# pop(key, 해당 key가 없을 경우 기본값)
c = a.pop('a', 0)
print(c)
print(a)
# popitem
d = a.popitem()
print(d)
print(a)