Set은 list의 친척이다. List와 마찬가지로 여러 다양한 타입의 element 들을 저장할 수 있다. List 와 다른 점은 아래와 같다.
-
List 와 다르게 요소들이 순서대로 저장되어 있지 않다. 즉 ordering 이 없다. 그러므로 for문에서 읽어들일때 요소들이 순서대로 나오는 게 아니라, 무작위 순서대로 나온다.
-
순서가 없으므로 indexing 도 없다. n번째 요소 읽어들이는 것 불가능하다.
-
동일한 값을 가지고 있는 요소가 하나 이상 존재할 수 없다. 중복된 값 저장이 불가능하다. 만일 새로 저장하려고 하는 요소와 동일한 값의 요소가 존재한다면, 새로운 요소가 이전 요소를 replace한다.
Set을 생성하는 방법은 { } 중괄호를 사용하는 방법, set 함수를 사용하는 방법 2가지가 있다.
set1 = {1, 2, 3}
set2 = set([1, 2, 3])
보다시피 set() 함수를 사용하기 위해서는 list를 parameter 로 전달해야 한다. 그러므로 일반적으로 set() 함수를 사용해서 set을 만드는 경우는 list를 set으로 변환하고 싶을 때 사용한다.
또한 앞에서도 말했듯이 set에서는 중복된 값은 저장이 안된다. 그러므로 동일한 값이 1이상 있다면, 제일 나중에 저장되는 요소만 남아있게 된다.
이러한 성질을 이용하면 list에서 중복된 값을 제거할 수 있거나 중복되지 않는 element의 개수를 구할 수 있다!
my_list = [1, 2, 1, 1, 3, 4, 5]
my_list= set(my_list)
print(len(my_list))
Set에서 새로운 요소 추가하기
List에서 새로운 요소를 추가할 때는 append를 사용했었다. list 와는 어울리는 단어인데 왜냐하면 list에서는 요소들이 순차적으로 더해지기 때문에 새로운 요소는 list 맨 뒤에 덧붙여지기 때문이다. 그에 비해 set은 요소들이 순차적으로 저장되지 않는다. 그러므로 append 가 아닌 add 라는 함수를 사용해서 새로운 요소를 추가한다.
my_set = {1, 2, 3}
my_set.add(4)
print(my_set)
> {1, 2, 3, 4}
Set에서 요소 삭제하기
Set에서 요소를 삭제할 때에는 remove 라는 함수를 사용한다.
my_set = {1, 2, 3}
my_set.remove(3)
print(my_set)
> {1, 2}
Look Up
Set 에 어떤 값이 이미 포함되어 있는지를 알아보는 것이다. Set 에서 look up 하기 위해서는 in 키워드를 사용해야 한다.
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
Intesection(교집합) & Union(합집합)
Set 은 교집합과 합집합을 구할때도 사용될 수 있다. 교집합은 & 키워드 혹은 intersection 함수를 사용하면 된다.
합집합은 | 키워드 혹은 union 함수를 사용하면 된다.
# 교집합
set1 = {1, 2, 3, 4, 5, 6}
set2 = {4, 5, 6, 7, 8, 9}
print(set1 & set2)
> {4, 5, 6}
print(set1.intersection(set2))
> {4, 5, 6}
# 합집합
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}
'Python' 카테고리의 다른 글
[Python] Dictionary (0) | 2020.05.29 |
---|---|
[Python] Tuple (0) | 2020.05.29 |
[Python]List (0) | 2020.05.28 |
파이썬 기초2 (0) | 2020.05.28 |
파이썬 기초 1 (0) | 2020.05.27 |