Python

Python 문법 기초 6 - 묶음형 자료형(set)

코딩탕탕 2022. 10. 22. 15:11

 

# 순서 X, 중복 X
a = {1,2,3,1}
print(a, type(a), len(a))

b = {3, 4}

print(a.union(b)) # 합집합
print(a.intersection(b)) # 교집합
print(a - b) # 차집합
print(a | b) # 합집합
print(a & b) # 교집합


<console>
{1, 2, 3} <class 'set'> 3
{1, 2, 3, 4}
{3}
{1, 2}
{1, 2, 3, 4}
{3}

set은 순서, 중복이 불가능하다. 그러므로 수정도 불가능하다.

이런식으로 합집합, 교집합, 차집합을 표현할 수 있다.

 

a = {1,2,3,1}
print(a)
# print(a[0]) # 'set' object is not subscriptable
# a[0] = 100  # err

a.update({4,5}) # 함수를 이용한 추가 가능
a.update([6,7,8])
a.update((9,))
print(a)

a.discard(3) # 값에 의한 삭제
a.remove(5)  # 값에 의한 삭제
# a.discard(3) # 해당 값이 없으면 넘어가고 있으면 삭제 된다.
# a.remove(5)  # 해당 값이 없으면 에러 발생
print(a)


<console>
{1, 2, 3}
{1, 2, 3, 4, 5, 6, 7, 8, 9}
{1, 2, 4, 6, 7, 8, 9}
{1, 2, 4, 6, 7, 8, 9}

set 타입은 수정이 불가능하다. 에러 발생! 수정은 불가하지만 update 로 추가는 가능하다.

삭제도 가능하다. discard 와 remove 둘 다 삭제 기능이지만

discard 는 해당 값이 없으면 넘어가고 있으면 삭제,

remove는 해당 값이 없으면 에러가 발생한다.

 

c = set()
c = a
print(c)
a.clear()
print(a)
print(c)


<console>
set()
set()

set() 을 호출하는 것으로 set 타입으로 호출하기

얕은 복사(치환)

clear 는 전체 삭제

 

print()
li = [1,2,3,1,2,3]
print(li)
imsi = set(li)
li = list(imsi)
print(li)


<console>
[1, 2, 3, 1, 2, 3]
[1, 2, 3]

list 타입인 li 를 imsi라는 변수의 set 타입을 만들어 그곳에 넣고

다시 li 의 변수를 lmsi의 값이 들어있는 list를 만든다.