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}
^ 를 이용해도 된다.