set 은 집합 자료형이다. 집합 연산을 쉽게 할 수 있다.
리스트를 셋으로 만들어 주면 데이터 타입이 1)해시형 데이터 타입 셋으로 바뀌면서 2)중복을 제거하고 3)정렬해준다.
l = [1,2,3,4,5,1]
ls= set(l)
ls
>> {1, 2, 3, 4, 5}
이와 같은 특징 때문에 중복을 제거하고 싶거나 정렬을 계속 해줘야 할 때 set 자료형을 활용한다.
리스트 말고 문자열도 set()으로 셋으로 만들어 줄 수 있다.
s = "Hello"
ss = set(s)
ss
>> {'H', 'e', 'l', 'o'}
정렬하고, 중복을 제거하는데, 대문자가 우선한다.
근데 리스트의 원소도 리스트면 set 변환이 되지 않고 type 에러가 난다.
ll = [[1,1],[2,1],[1,2],[3,4],[2,1],[2,1]]
ll_set = set(ll)
ll_set
>>---------------------------------------------------------------------------
TypeError Traceback (most recent call last) <ipython-input-6-7ac5cb5b356f> in <module>
1 ll = [[1,1],[2,1],[1,2],[3,4],[2,1],[2,1]]
----> 2 ll_set = set(ll)
3 ll_set
TypeError: unhashable type: 'list'
이럴 땐 원소인 리스트를 튜플로 바꾼다음 set으로 변환한다 (map()활용해서)
ll = [[1,1],[2,1],[1,2],[3,4],[2,1],[2,1]]
ll_set = set(list(map(tuple,ll)))
ll_set
>> {(1, 1), (1, 2), (2, 1), (3, 4)}
'Programming > Python' 카테고리의 다른 글
.get() 딕셔너리에서 key를 사용해 value 얻기 (0) | 2021.05.04 |
---|---|
map() - 리스트, 튜플 등에서의 각 요소를 지정된 함수로 처리해주는 내장함수 (0) | 2021.04.26 |
[AI class day 5] 프로그래머스 코딩 테스트 문제 풀기 TIL (0) | 2021.04.24 |
[AI class day 4] 파이썬 코딩테스트 문제 풀이 TIL (0) | 2021.04.23 |
[AI class day 3] 파이썬 코딩테스트 문제 풀이 TIL (0) | 2021.04.22 |