프로그래밍/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