파이썬의 set에 대해 알아보겠습니다. 이 글은 책
점프 투 파이썬
을 토대로 작성됐습니다.
집합에 관련된 것들을 쉽게 처리하기 위한 자료형. 같은 데이터가 중복되어 들어가지 않고, 자료의 순서는 의미가 없다.
set("Helllllo")
# {'o', 'e', 'H', 'l'}
set의 특징은 2가지이다.
요소간의 중복을 허용하지 않는다. 만일 새로 저장하려고 하는 요소와 동일한 값의 요소가 존재한다면 새로운 요소가 이 전 요소를 치환(replace)합니다.
순서가 없다. 따라서 리스트나 튜플처럼 인덱싱을 이용해서 요소 값을 얻을 수 없다. 그러므로 for
문에서 읽어들일때 요소들이 순서대로 나오는게 아니라 무작위 순서대로 나옵니다.
set을 생성하는 법은 일반적으로 2가지가 있습니다. 중괄호 { }
를 사용하는 방법과 set()
함수를 사용하는 방법 입니다.
일반적으로 새로운 set을 만드는 경우에 {}
를 사용하고,
list를 set로 변환하고 싶은 경우에는 set()
함수를 사용한다.
교집합은 &
기호를 사용한다.
s1 = {1,2,3,4}
s2 = {2,4,6,8}
s1 & s2 # {2, 4}
합집합은 |
기호 혹은 union
메서드를 이용한다.
print(s1 | s2)
print(s1.union(s2))
여집합은 -
기호 혹은 difference
메서드를 이용한다.
print(s1 - s2)
print(s1.difference(s2))
요소를 더하고 싶을 땐 add
메서드를 이용한다.
len
함수로 집합자료형의 길이를 구할 수 있다.
clear
메서드로 안의 요소들을 모두 삭제할 수 있다.
update
메서드로는 여러 개의 값을 한꺼번에 추가할 수 있다.
remove
메서드로 특정 값을 제거할 수 있다.
my_set = set()
# add method
my_set.add(1)
my_set.add(2)
my_set.add(2)
print(my_set) # {1,2}
# len 함수
len(my_set) # 2
# discard method
my_set.discard(1) # {2}
# clear method
my_set.clear() # {}
# update method
my_set.update([1,2,3,4])
# remove method
my_set.remove(4)
Set에 어떠한 값이 이미 포함되어 있는지를 알아보는 것을 look up 이라고 합니다.
Set에서 look up을 하기 위해서는 in
키워드를 사용해야 합니다.
```python
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