파이썬

세트 ( set ) - 컬렉션 타입

96__혀누 2024. 3. 14. 16:16

세트 ( set )

컬렉션 타입이며, 요소들의 중복이 불가능하다.
중괄호 {}를 사용하여 생성하거나 set() 생성자를 사용한다.
요소들의 정렬 기준은 없다.

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

>>
{1, 3, 5, 7}
<class 'set'>
-------------------------------------------
s2 = set([1, 3, 5, 7])
print(s2)
print(type(s2))

>>
{1, 3, 5, 7}
<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}

세트의 메서드

add() : 세트에 요소를 "한개만" 추가

s1 = {100, 200}
# add() : 세트에 요소를 한개씩 추가
s1.add(150)
print(s1)
s1.add(50)
print(s1)

>>
# 따로 정렬 기준이 없다.
{200, 100, 150}
{200, 50, 100, 150}

update() : 세트에 요소를 "여러개" 추가

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

>>
{100, 200, 40, 50, 20, 60}

remove() : 세트의 특정 요소를 제거한다. 단, 삭제할 요소가 해당 세트에 존재하지 않으면 에러가 발생한다.

s1 = {10, 20, 30}
s1.remove(20)
print(s1)
# s1.remove(50) 삭제할 요소가 없으면 에러발생 KeyError: 20

>>
{10, 30}

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}
137973498448128 # 같은 데이터를 복하더라도, 주소는 다르다.
137973497461472

union() : 합집합

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

result2 = s1 | s2  # | 기호를 사용하면 동일한 방법으로 합집합이 가능하다.
print(result2)

>>
{70, 40, 10, 50, 20, 60, 30}
{70, 40, 10, 50, 20, 60, 30}

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}

difference() : 차집합

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

result2 = s1 - s2  # - 기호를 사용
print(result2)

>>
{10, 20}
{10, 20}

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}

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

파이썬의 연산자  (0) 2024.03.14
딕셔너리 - 컬렉션 타입  (0) 2024.03.14
input 함수  (0) 2024.03.13
튜플 ( 컬렉션 타입 )  (0) 2024.03.13
리스트 ( 컬렉션 타입 )  (0) 2024.03.13