본문 바로가기

Python

[Python] Set

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