반응형
set
- 세트(Set)는 중복되지 않은 항목들이 모인 것으로 순서도 없다.(Unordered)
→ 순서가 없기 때문에 인덱싱(indexing)이 없다. 인덱싱이 없다.
- 딕셔러니와 마찬가지로 중괄호 {} 사용
- 중괄호를 사용하는 것은 dictionary와 비슷하지만,
키key가 없이 값만 존재한다.
- 집합 연산이 가능하다.
A = set( ["H", "S", "W", "S", "S"] )
print(A)
numbers = {2, 1 ,3, 3, 1, 2, 4}
print(numbers)
set 관련 함수
- add(): 기존 값에 추가 (중복된 값은 무시)
- update(): 기존 값 + 새로운 값으로 중복없이 구성
값을 변경하기 보다는 여러 데이터를 추가할 때 사용
- remove(): 해당하는 원소를 제거하고 없으면 KeyError 발생
- discard(): 해당하는 원소를 제거하며, 값이 없어도 에러 발생 X
- clear(): 집합 초기화
numbers = {2, 1, 3}; print(numbers)
numbers.add(4); numbers.add(1); print(numbers)
numbers.discard(5); print(numbers)
numbers.update([2, 7, 6]); print(numbers)
numbers.clear(); print(numbers)
set(집합)의 복사
s = {1, 3, 5}
t = s.copy()
print(t)
print(id(s), id(t))
set 내부 원소는 불변이기 때문에
굳이 얕은 복사 / 깊은 복사 구분할 필요가 없지만
copy() 동작은 얕은 복사에 해당합니다.
집합 연산과 함수(메소드)
- A.issubset(B): 부분집합
- A.union(B): 합집합 A | B
- A.intersection(B): 교집합 A & B
- A.difference(B): 차집합 A - B
- A.symmetric_difference(B): 대칭차집합 (합집합 - 교집합) A ^ B
|=, &=, -=, ^= : = 과 조합함으로써 연산과 동시에 할당
s1 = {1, 2, 7}
s2 = {1, 2, 4, 5}
s3 = {2, 4, 5, 6}
l = [1,2,4,5]
print(s1 | set(l), s1.union(l))
print(s1 | s2 | s3, s1.union(s2, s3))
print(s1 & s2 & s3, s1.intersection(s2, s3))
print(s1 - s2 - s3, s1.difference(s2, s3))
print(s1 ^ s2, s1.symmetric_difference(s2))
print(s1.isdisjoint([10,20,30]), s1.isdisjoint(s2))
print(s1.issubset({1,2,4,7}), s1.issubset(s1), s1 <= s1, s1 < {1,2,4,7})
print(s1.issuperset({1,2}), s1.issuperset(s1), s1 >= s1, s1 > {1,2})
[예제] 교집합 연산을 통해서 공통원소 확인
x = ('kim', 'lee', 'park', 'song' , 'hyun')
y = ('ming', 'park', 'song', 'hy')
result = set(x) & set(y)
print(result)
print(len(result))
반응형
'프로그래밍 언어 > Python' 카테고리의 다른 글
[python] 파이썬 리스트(list) 얕은 복사 vs 깊은 복사 (0) | 2021.08.21 |
---|---|
[python] 파이썬 리스트 (list) (0) | 2021.08.21 |
[python] 파이썬 튜플 (tuple) (0) | 2021.08.18 |
[python] 파이썬으로 수학 산술자 / 수식 표현 (0) | 2021.08.17 |
[python] 키워드 인수(sep, end) 활용해서 출력 (0) | 2021.08.16 |
댓글