728x90
반응형
💡
Set(중복과 순서가 없는 자료형)
순서가 없기 때문에 인덱싱이 지원 안됨
s = set()
print(s, type(s))
s= set([1,2,3,4,5])
print(s, type(s))
s = set("HELLO")
print(s, type(s))
set() <class 'set'>
{1, 2, 3, 4, 5} <class 'set'>
{'E', 'O', 'L', 'H'} <class 'set'>
s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
print(F"합집합 : {s1} ⋃ {s2}")
print(s1.union((s2)))
print(set.union(s1, s2))
print(s1 | s2)
합집합 : {1, 2, 3, 4, 5} ⋃ {3, 4, 5, 6, 7}
= {1, 2, 3, 4, 5, 6, 7}
{1, 2, 3, 4, 5, 6, 7}
{1, 2, 3, 4, 5, 6, 7}
{1, 2, 3, 4, 5, 6, 7}
s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
print(f"교집합 : {s1} ⋂ {s2}")
print(s1.intersection((s2)))
print(set.intersection(s1,s2))
print(s1 & s2)
교집합 : {1, 2, 3, 4, 5} ⋂ {3, 4, 5, 6, 7}
{3, 4, 5}
{3, 4, 5}
{3, 4, 5}
s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
print(f"차집합 : {s1} - {s2}")
print(s1.difference((s2)))
print(set.difference(s1,s2))
print(s1 - s2)
차집합 : {1, 2, 3, 4, 5} - {3, 4, 5, 6, 7}
{1, 2}
{1, 2}
{1, 2}
{0, 1, 2, 3, 4}
s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
print(f"대칭 차집합(XOR) : {s1} ^ {s2}")
print(s1.symmetric_difference(s2))
print(set.symmetric_difference(s1,s2))
print(s1 ^ s2)
대칭 차집합 : {1, 2, 3, 4, 5} ^ {3, 4, 5, 6, 7}
{1, 2, 6, 7}
{1, 2, 6, 7}
{1, 2, 6, 7}
print(f"할당 연산자(기존의 집합에 연산을 진행) : | ")
a = {1,2,3,4}
print(id(a))
a |= {3,4,5,6}
print(a, id(a)) # 주소 동일
a = {1,2,3,4}
a &= {3,4,5,6}
print(a, id(a)) # 주소 동일
a = {1,2,3,4}
a -= {3,4,5,6}
print(a, id(a)) # 주소 동일
a = {1,2,3,4}
a ^= {3,4,5,6}
print(a, id(a)) # 주소 동일
할당 연산자(기존의 집합에 연산을 진행) : |
2427977984352
{1, 2, 3, 4, 5, 6} 2427977984352
{3, 4} 2427977981664
{1, 2} 2427977984352
{1, 2, 5, 6} 2427977981664
s3 = set(range(5))
print(s3)
결과: {0, 1, 2, 3, 4}
s=set('기러기')
print(s)
결과: {'기', '러'}
# set은 list, dict 와 달리 set 안에 set을 넣을 수 없다
s= {
{1,2,3},
{3,4,5}
}
print(s)
결과 : #에러발생 TypeError: unhashable type: 'set'
# {}: set , []:리스트 , (): 튜플 , {key, value}: dict
s={}
print("s ={}", type(s))
결과 : s ={} <class 'dict'> # 주의 , 빈 중괄호는 dict가 됨
print('set의 관계연산')
a = {1,2,3,4}
print('부분집합 issuperset<=',a<={1,2,3,4})
print(a.issubset({1,2,3,4}))
print('진부분집합 <', a< {1,2,3,4,5})
print('상위 집합 issuperset >= ', a>={1,2,3,4})
print(a.issuperset({1,2,3,4}))
print('진상위집합 >=', a>={1,2,3})
[결과]
부분집합 issuperset<= True
True
진부분집합 < True
상위 집합 issuperset >= True
True
진상위집합 >= True
print(a == {1,2,3,4})
print(a=={3,2,1,4}) # 순서 상관없음
print('겹침여부 isdisjoint: ', a.isdisjoint({5,6,7,8}))
[결과]
겹침여부 isdisjoint: True
겹침여부 isdisjoint: False
a.add(5) # 추가
a.remove(5) # 삭제 #element 가 없으면 Error
a.discard(9) #element 가 없어도 OK
a.pop() #임의의 element를 삭제
[결과]
{1, 2, 3, 4, 5}
{1, 2, 3, 4}
{1, 2, 3, 4}
{2, 3, 4}
a={1,2,3,4}; print(a, id(a))
b=a #주소를 복사
print(b, id(b))
[결과]
{1, 2, 3, 4} 2254011228320
{1, 2, 3, 4} 2254011228320
print(a is b)
b.add(5)
b=a.copy() #a와 b는 다른 set
print(id(a),id(b))
[결과] 1577749569696 1577749565440
for i in a: print(i, end=" ", sep=",")
print()
# 방법 1
for i in {1,2,3,4}: print(i, end=" ", sep=",")
a= {i for i in 'pineapple' if i not in "apl"}
# 방법 2
for i in {1,2,3,4}: print(i, end=" ", sep=",")
a= set(i for i in 'pineapple' if i not in "apl")
print(a)
[결과]
1 2 3 4
1 2 3 4 {'i', 'e', 'n'}
집합의 내용을 수정 불가 frozenset()
# 집합의 내용 수정 안됨, 2차원 이상 생성 가능
a= frozenset(range(10))
a= frozenset({
frozenset(range(1,2)),
frozenset(range(3, 5))
})
print(a)
728x90
반응형
'PROGRAMING📚 > Python📑' 카테고리의 다른 글
Python - tkinter (0) | 2024.11.28 |
---|---|
Python -dict (0) | 2024.11.27 |
[Python]Tuple (0) | 2024.11.25 |
[Python] 리스트 List (0) | 2024.11.24 |
[Python]반복문 roof (0) | 2024.11.23 |
댓글