Python 기초 정리 네 번째 시간.
Python의 built-in data types 중에서 set, tuple을 간략하게 정리하고, tuple의 packing, unpacking에 대해서 짧게 정리를 해보려고 한다.
Set, Tuple
사실 데이터 분석 일을 하다 보면 set과 tuple보다는 list와 dictionary를 가장 많이 사용한다. 그러다 보니까 이들 개념에 대해서 아예 잊어버리고 사는 경우가 종종 발생한다.
하지만 효율화된 코드를 작성하려고 하다 보면, 이들 자료형들도 알아둘 필요가 있다고 생각을 한다.
Set
1. Set의 정의
set은 python 공식 문서에서 다음과 같이 정의가 되어 있다.
: A set is an unordered collection with no duplicate elements.
중요한 특징은 with no duplicate elements, 즉 중복 없이 요소를 가지고 있다.
sample_set_1 = set((5,2,3,1,3,2,5))
sample_set_2 = {5,2,3,1,3,2,5}
sample_set_3 = set([5,2,3,1,3,2,5])
print(sample_set_1)
print(sample_set_2)
print(sample_set_3)
생성은 이런식으로 하면 된다.
output은 모두 동일하다.
그리고 sample_set_3 를 보면,
list를 set에 집어 넣어서 {1,2,3,5} 라는 output을 만들어 냈는데, 여기에 다시 list를 취할 수도 있다.
print(list(sample_set_3))
이렇게 그냥 list를 취해주기만 하면 되고, 그러면 [1, 2, 3, 5] 이렇게 output이 나타난다.
따라서 list에서 중복을 제거하고 싶다면 set을 한 번 거쳐서 list로 다시 data type을 바꿔주면 유용하다.
2. 특징: add / remove / 접근
공식 문서에 나와 있는대로, add와 remove method를 사용해서 element를 추가하거나 제거할 수 있다.
set은 중복 없이 요소를 가지고 있으므로, 이미 가지고 있는 element를 add해도 원래의 set과 동일한 모습을 나타낸다.
또 다른 특징으로는 set에서는 set_sample_1[0] 과 같이 인덱스로 특정한 값에 접근할 수 없다.
다음과 같은 에러가 발생한다.
: TypeError: 'set' object is not subscriptable
이 말은 set의 요소를 변경하는 것은 불가능하다는 뜻이고, add와 remove를 통해서만 작업이 가능하다는 뜻이다.
Tuple
1. tuple의 정의
tuple의 정의는 공식 문서에서 다음과 같이 나와있다.
: Tuples are immutable sequences, typically used to store collections of heterogeneous data
(such as the 2-tuples produced by the enumerate() built-in).
불변의 sequence를 가지는 data type이고, 서로 다른 데이터의 collection을 위해서 사용된다고 이야기 하고 있다.
my_tuple = (3,2,5,1,4)
# my_tuple[0] = 2
# # TypeError: 'tuple' object does not support item assignment
immutable sequences 이기 때문에 위와 같이 접근해서 값을 새로 할당하려고 하면 에러가 발생한다.
그냥 my_tuple[0] 을 통해서 값을 가져오는 것은 가능하다.
my_tuple_with_list= ([1,2,3], [11, 22, 33])
my_tuple_with_list[0][0] = 10
print(my_tuple_with_list)
하지만 위와 같이, 변할 수 있는 data type(예를 들면 위와 같이, list)을 가질 수는 있다.
결과는 ([10, 2, 3], [11, 22, 33]) 이다.
이걸 영어로 표현하면, "they can contain mutable objects." 라고 한다고 한다.
Python 공식 문서에서는 list, tuple, range와 같이 Sequence Types에 대해서 기본적인 operator들이 어떤 게 있는지 설명해주고 있다.
list에서만 되는 줄 알았던 것들이 tuple에서도 되는지 솔직히 몰랐다 ..
tuple의 packing, unpacking
tuple에는 조금 특이한 문법이 있는데, 예를 들면 아래와 같은 경우다.
x = [4, 2, 3, 5]
y = [8, 4, 6, 10]
tuple_packing = x, y
print(tuple_packing)
위 코드의 실행 결과는 아래와 같다.
이를 'tuple packing' 이라고 부른다.
두 개의 list가 하나의 tuple에 packing이 된 것이다.
z, w = tuple_packing
print(z)
print(w)
그리고 다시 이렇게 tuple_packing을 ', '로 구문한 변수에 넣어주면 아래와 같은 결과를 얻는다.
이는 sequence unpacking이라고 부른다.
물론, 오른쪽에 있는 Sequence data type에 있는 요소의 수와 등호 왼쪽의 변수의 개수는 같아야만 한다.
으 .. 원래 sort와 sorted의 차이도 적어보려고 했는데, 다음에 해야겠다.
끝.
'Pyhon 기초, 실전' 카테고리의 다른 글
[Python 기초] list, dictionary comprehension and conditional comprehension (1) | 2023.07.17 |
---|---|
[Python 기초] 여러 가지 파일 읽고 쓰기 (txt, csv, pickle, json 등) (0) | 2023.07.16 |
[Python 기초] 주석(Docstring) 작성 스타일 (0) | 2023.07.13 |
[Python 기초] 변수의 범위(scope), nonlocal과 global 키워드 사용법 (0) | 2023.07.12 |
[Python 기초] copy & assignment: shallow copy, deep copy (얕은 복사, 깊은 복사) (0) | 2023.07.09 |