list
와 같이 데이터를 저장하게 해주는 것들을 자료구조(data structure)라고 하며, tuple
은 파이썬의 여러 자료구조들 중 하나이다.
Tuple은 list와 비슷하게 요소들을 저장할때 쓰이지만 tuple은 한번 선언되면 수정이 불가능하다는 차이점이 있다.
그 외, 요소를 읽어들이는 방법, slicing은 모두 list와 동일하다.
my_tuple = (1, 2, 3) # 대괄호를 사용하는 list와 다르게 일반 괄호 사용
coords =[(4,4), (5,2), (-2,2), (-3,-4)] # list와 결합하여 사용
coords = [[4,4], [5,2], [-2,2], [-3,-4]] # list만 사용
위와 같은 경우 list보다는 tuple이 더 효과적이다.
왜냐하면 list는 수정이가능하고 여러 요소를 저장할 수 있기 때문에 tuple보다 차지하는 메모리 용량이 더 크다. 따라서 수정이 필요없고 간단한 형태의 데이터 표현 시에는 tuple을 이용하는 것이 더 효과적이다.
예제
6개의 요소로 이루어진 list를 2개씩 slicing된 tuple list로 변환하기
ex. my_list = [1,2,3,4,5,6]을
my_list = [(1,2),(3,4),(5,6)]으로 만들기
def convert_list_to_list_of_tuples(my_list):
if len(my_list) < 7:
my_list = [tuple(my_list[0:2]), tuple(my_list[2:4]), tuple(my_list[4:])]
return my_list
list를 tuple로 바로 변환이 가능하다!
ex. input = [1,2,3]
tuple(input) = (1,2,3)
Set
은 list
와 마찬가지로 여러 다양한 타입의 요소들의 저장이 가능하지만 다음과 같은 차이가 있다.
set1 = {1, 2, 3} # 첫 번째 방법: 중괄호({}) 이용
set2 = set([1, 2, 3]) # 두 번째 방법: Set() 함수 이용
# list 인 number를 set으로 변경하여 요소 개수 return 하기
def get_unique_numbers_count(numbers):
numbers = set(numbers)
return len(numbers)
# list = [1, 1, 2, 3, 4, 5, 1, 1] 인 경우
set = {1, 2, 3, 4, 5}가 되어 결과는 총 요소의 개수는 5가 됨(중복 x)
add
함수로 새로운 요소 추가하기
ref. list
에는 순서가 있기 때문에 append
를 이용해 리스트의 맨 뒤에 요소를 추가하지만, set
은 순서가 없기때문에 add
이용
my_set = {1, 2, 3}
my_set.add(4)
print(my_set) # 결과: {1, 2, 3, 4}
remove
함수로 요소 제거하기 my_set = {1, 2, 3}
my_set.remove(3)
print(my_set) # 결과: {1, 2}
in
Set
에 어떤 값이 포함되어 있는지 확인하기 위한 look up 기능 수행
my_set = {1, 2, 3}
if 1 in my_set:
print("1 is in the set") # 결과: 1 is in the set
if 4 not in my_set:
print("4 is not in the set") # 결과: 4 is not in the set
Set
은 교집합과 합집합을 구할때도 사용할 수 있다.
* 교집합(intersection)
intersection()
함수 이용
set1 = {1, 2, 3, 4, 5, 6}
set2 = {4, 5, 6, 7, 8, 9}
print(set1 & set2) # 결과: {4, 5, 6}
print(set.intersection(set2)) # 결과: {4, 5, 6}
* 합집합(union)
|
또는 union()
함수 이용
print(set1 | set2) # 결과: {1, 2, 3, 4, 5, 6, 7, 8, 9}
print(set1.union(set2)) # 결과: {1, 2, 3, 4, 5, 6, 7, 8, 9}
dictionary
는 중괄호({})를 사용해 선언하며, key와 value로 이루어져 있다.
key는 string 뿐만 아니라 숫자도 가능하지만 중복될 수 없다(존재하는 key값이 또 추가되면 기존의 key값의 요소를 치환)
my_dic = {"key1":"value1", "key2":"value2"}
Dictionary에서 요소를 읽어들이는 방법은 list와 유사하지만 index 대신 key 값을 사용한다는 점이 다르다.
my_dic["key1"]
dictionary_name[new_key] = new_value
list
와 비슷하지만 dictionary
는 index 대신 key값을 사용한다.my_dict = { "one": 1, 2: "two", 3 : "three" }
my_dict["four"] = 4
print(my_dict) # 결과: {'one': 1, 2: 'two', 3: 'three', 'four': 4}
또한 list
와 같이 비어있는 dictionary 만든 후 하나씩 추가하는 것도 가능!
my_dict = { }
my_dict[1] = "one"
my_dict[2] = "two" # 결과: {1: 'one', 2: 'two'}
list
와 비슷하고 dictionary
는 key값을 사용한다.my_dict = { "one": 1, 2: "two", 3 : "three" }
del my_dict["one"]
print(my_dict) # 결과: {2: 'two', 3: 'three'}