프로그래밍/python
10. tuples, sets
서몰알
2021. 12. 30. 22:57
10.1 tuples
immutable 바뀔 수 없는 자료형
list는 [], dictionaries는 {}, tuples는 ()를 사용한다.
fruits = ("apple", "orange", "tomato", "banana")
print(type(fruits)) # <class 'tuple'>
print(fruits) # ('apple', 'orange', 'tomato', 'banana')
10.1.1 tuples의 특징들
- 요소별 수정, 삭제, 변경만 불가능하지 새로 생성하면 덮어쓰기는 가능하다.
- 튜플의 원소가 하나일때 요소 끝에 ,를 붙여주어야 한다. (그렇지 않으면 tuple을 string 형태로 인식해버림)
- 튜플의 원소가 여러개일 때 튜플 생성 시 () 안해줘도 알아서 생기지만 가독성을 위해 해주는 것이 좋다.
10.1.2 unpacking tuples
a, b = (1, 2)
print(a) # 1
print(b) # 2
# 튜플에서 하나의 값만 쓰고 버리고 싶다면?
# 언더바를 이용!
a, _ = (1,2)
print(a)
# 만약 변수가 넣어주는 값보다 더 많으면?
a, b, c = (1, 2) #ValueError
# 만약 변수가 넣어주는 값보다 더 적으면?
a, b, c = (1, 2, 3, 4, 5) #ValueError
# 하나씩 넣으려면 변수와 튜플 원소의 값이 같아야 함을 알 수 있다.
# 위 문제를 해결할 수 있는 방법
a, b, *c = (1, 2, 3, 4, 5)
print(a) # 1
print(b) # 2
print(c) # [3, 4, 5]
a, b, *_ = (1, 2, 3, 4, 5)
print(a) # 1
print(b) # 2
a, b, *_, d = (1, 2, 3, 4, 5)
print(a) # 1
print(b) # 2
print(d) # 5 마지막 !!! 값이 저장됨 . 다음 값이 아니라 마지막 값!!!
#궁금하니 이것도 해보자
a, b, *_, d, e = (1, 2, 3, 4, 5)
print(a) # 1
print(b) # 2
print(d) # 4
print(e) # 5
# 알 수 있는 점
# 마지막 값이 저장되는 이유는 *(asterisk)가 포함되어 남은 값을 싹 쓸어갔기 때문이다.
10.2 sets 집합
값을 저장하는 파이썬의 표준 파이썬 데이터
중복 값은 저장되지 않음 -> string 넣으면 같은 글자는 제거됨 (대문자 소문자는 구분)
unordered data -> 당연히 index 안됨 - > 당연히 slicing 안됨
사용하는 괄호는 {} ({}쓰는 자료형 하나 더는
list를 set로 바꿀 수도 있음.
x = set([1,2,3])
print(type(x)) # <class 'set'>
y = {1,2,3}
x == y # True