본문 바로가기
인공지능/파이썬 기초

파이썬 컬렉션 타입 - 세트

by hyunji00pj 2024. 9. 26.

KDT_4기 파이썬 기초 0924(3)

2024.09.24 수업 내용 복습일기 세번째

 

리스트에 이어서 컬렉션타입 세트에 대해서 알아보겠다.

 

1. 세트

세트(set) 중복되지 않는 항목들의 컬렉션입니다.

 

생성

세트는 중괄호 {} 사용하여 생성하거나 set() 생성자를 사용할  있습니다.

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

빈 세트의 타입은 딕셔너리로 확인 된다.

s2 = {}
print(type(s2))

세트 안에 리스트를 넣어도 세트가 된다

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

리스트를 세트로 변환할 수 있다

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

세트를 만들 때에 중복된 값이 있다면 중복된 뒤의 값이 삭제된다

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

리스트를 세트로 바꾸어도 마찬가지이다

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

 

2. 세트의 메서드

 

add() : 세트의 요소를 추가한다

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

#add() : 세트의 요소를 추가
s1.add(2)
print(s1)
s1.add(4)
print(s1)
s1.add(7)
print(s1)

 

update() : 세트에 한번에 여러 요소를 추가해준다. 튜플은 순서 변경이 불가능 하니 리스트로 추가해준다

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

#update(): 세트에 여러 요소를 추가
s1.update([2,4,6,8,10])
print(s1)

remove() : 세트의 요소를 제거해준다. 단 요소가 없는데 사용하면 에러가 발생한다.

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

#remove(): 세트의 요소를 제거. 단 요소가 없으면 에러가 발생
s1.remove(3)
print(s1)
# s1.remove(3) KeyError: 3

 

 

discard() :  세트의 요소를 제거한다. 단 요소가 없어도 에러를 발생시키지 않는다.

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

#discard(): 세트의 요소를 제거. 단 요소가 없어도 에러 발생하지 않음
s1.discard(3)
print(s1)
s1.discard(3)
print(s1)

 

아래 처럼 s2 = s1 처럼 처리하면 항목 값들이 복사되는것이 아니라 메모리 주소를 복사하게 된다.

copy() : 사용하면 세트 자체를 복사해서 메모리도 다른 것을 확인 할 수 있다.

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

s2 = s1 #메모리 주소를 복사
print(id(s1))
print(id(s2))

#copy(): 세트를 복사
s2 = s1.copy() #값을 복사 메모리가 다른 곳에 있음
print(s1)
print(s2)
print(id(s1))
print(id(s2))

 

union() : 합집합을 계산하여 반환한다.

s3 = {10,20,30,40,50}
s4 = {30,40,50,60,70}

#union(): 합집합을 계산하여 반환
result = s3.union(s4)
print(result)

result2 = s3 | s4
print(result2)

 

 

intersection(): 교집합을 계산하여 반환

s3 = {10,20,30,40,50}
s4 = {30,40,50,60,70}

#intersection(): 교집합을 계산하여 반환
result1 = s3.intersection(s4)
print(result1)

result2 = s3 & s4
print(result2)

 

difference(): 차집합을 계산하여 반환

s3 = {10,20,30,40,50}
s4 = {30,40,50,60,70}

#difference(): 차집합을 계산하여 반환
result1 = s3.difference(s4)
print(result1)

result2 = s3 - s4
print(result2)

 

symmetric_difference(): 대칭 차집합을 계산하여 반환

s3 = {10,20,30,40,50}
s4 = {30,40,50,60,70}

#symmetric_difference(): 대칭 차집합을 계산하여 반환
result1 = s3.symmetric_difference(s4)
print(result1)

result2 = s3 ^ s4
print(result2)

 

'인공지능 > 파이썬 기초' 카테고리의 다른 글

연산자  (0) 2024.09.29
컬렉션 타입- 딕셔너리  (2) 2024.09.26
input 함수  (2) 2024.09.26
컬렉션 타입 튜플  (0) 2024.09.26
컬렉션 타입- 리스트  (0) 2024.09.26