본문 바로가기
코딩/파이썬

파이썬 - 세트

by Song1234 2024. 3. 14.

1. 세트

세트(set)는 중복되지 않는 요소들을 저장하는 컬렉션이다.
중복 되는 자료가 많을경우 set 에 넣어서 중복된 자료를 편하게 정리 할수 있다.

1-1. 세트(set)는 중괄호{} 를 사용하거나 set() 으로 만든다

s1 = {}
print(s1)
print(type(s1))

결과:
{}
<class 'dict'>

 

 


s1 = {1, 3, 5, 7}
print(s1)
print(type(s1))

결과:
{1, 3, 5, 7}
<class 'set'>

 

 

요소를 넣어야 set 타입이 된다

 

 


 

 

s2 = set([1, 3, 5, 7])
print(s2)
print(type(s2))

결과:
{1, 3, 5, 7}
<class 'set'>

 

 


 

 

 

li1 = [1, 2, 3, 4]
s2 = set(li1)
print(s2)
print(type(s2))

결과:
{1, 2, 3, 4}
<class 'set'>

 

 


 

 

 

s3 = {1, 3, 5, 3, 7, 9, 1}
print(s3)

결과:
{1, 3, 5, 7, 9}

 

 

세트는 중복된 데이터는 저장하지 않는다.

 

 


 

 

 

li2 = [1, 3, 5, 3, 7, 9, 1]
print(li2)
s4 = set(li2)
print(s4)

결과:
[1, 3, 5, 3, 7, 9, 1]
{1, 3, 5, 7, 9}

 

 


 

 

2. set의 메소드

 

2-1. add(): 세트에 요소를 추가하는 메서드

 

 

s1 = {100, 200}
s1.add(150)
print(s1)
s1.add(50)
print(s1)

결과:

{200, 100, 150}
{200, 50, 100, 150}

 

 

set은 순서가 없는 자료다.(어디에 요소가 추가될지 모름)


2-2. update(): 세트에 여러 요소를 추가하는 메서드

 

 

s1 = {100, 200}
s1.update([30, 50, 60, 20])
print(s1)

결과:
{100, 200, 50, 20, 60, 30}

 

 


 

 

2-3. remove(): 세트의 요소를 제거하는 메서드, 단 요소가 없으면 에러가 발생한다.

s1 = {10, 20, 30}
s1.remove(20)
print(s1)
#s1.remove(20) 없는  값을  삭제 하려고 하면 에러가 발생한다.

결과:
{10, 30}

 

 


 

 

2-4. discard(): 세트의 요소를 제거하는 메서드, 단 요소가 없어도 에러가 발생하지 않는다.

 

s1 = {10, 20, 30}
s1.discard(20)
print(s1)
s1.discard(20) # 없는 값을 삭제를 해도 에러가 발생하지 않는다.

결과:
{10, 30}

 

 


 

 

2-5. copy(): 세트를 복사 하는 메서드

s1 = {10, 20, 30}
s2 = s1.copy() # s2 != s1
print(s1)
print(s2)
print(id(s1))
print(id(s2))

결과:
{10, 20, 30}
{10, 20, 30}
133192428174944
133192428174496

 

 

set를 복사해 새로운 메모리를 만들어 저장하기 때문에 s1 과 s2 는 같은 값이 아니다.

 

 


 

 

2-6. union(): 세트를 합쳐주는(합집합) 메서드

s1 = {10, 20, 30, 40, 50}
s2 = {30, 40, 50, 60, 70}
result1 = s1.union(s2)
print(result1)
result2 = s1 | s2 
print(result1)

결과:
{70, 40, 10, 50, 20, 60, 30}
{70, 40, 10, 50, 20, 60, 30}

 

 

| 를 이용해서 합쳐줄수도 있다.

 

 

 


 

 

2-7. intersection(): 교집합을 알려주는 메서드

s1 = {10, 20, 30, 40, 50}
s2 = {30, 40, 50, 60, 70}
result1 = s1.intersection(s2)
print(result1)
result2 = s1 & s2
print(result2)

결과:
{40, 50, 30}
{40, 50, 30}

 

 

 

& 를 이용해도 같은 결과가 나온다.

 

 


 

 

2-8. difference(): 차집합을 알려주는 메서드

s1 = {10, 20, 30, 40, 50}
s2 = {30, 40, 50, 60, 70}
reuslt1 = s1. difference(s2)
print(result1)
result2 = s1 - s2
print(result2)

결과:
{40, 50, 30}
{10, 20}

 

 

- 를 이용해도 된다.


 

 

2-8. symmetric_difference(): 대칭 차집합을 알려주는 메서드

s1 = {10, 20, 30, 40, 50}
s2 = {30, 40, 50, 60, 70}
result1 = s1.symmetric_difference(s2)
print(result1)
result2 = s1 ^ s2
print(result2)

결과:
{20, 70, 10, 60}
{20, 70, 10, 60}

 

 

 

^ 를 이용해도 된다.

'코딩 > 파이썬' 카테고리의 다른 글

파이썬 - 연산자  (2) 2024.03.14
파이썬 - 딕셔너리  (0) 2024.03.14
파이썬 - 튜플  (0) 2024.03.13
파이썬 - 리스트  (0) 2024.03.13
파이썬의 변수  (0) 2024.03.12