Python3 컬렉션(세트)
컬렉션(세트)은 반복되지 않는 순서가 지정되지 않은 요소의 시퀀스입니다.
집합의 요소는 반복되지 않으며 교집합, 합집합, 차이 등 공통 집합 연산을 수행할 수 있습니다.
집합은 요소를 쉼표로 구분한 중괄호 { }를 사용하거나 set() 함수를 사용하여 생성할 수 있습니다.
형식 생성 :
parame = {
value01,value02,...}
或者
set(value)
다음은 간단한 예입니다.
set1 = {
1, 2, 3, 4} # 直接使用大括号创建集合
set2 = set([4, 5, 6, 7]) # 使用 set() 函数从列表创建集合
참고 : 빈 컬렉션을 생성하려면 { } 대신 set()을 사용해야 합니다. 왜냐하면 { }는 빈 사전을 생성하는 데 사용되기 때문입니다.
추가 예시 데모:
>>> basket = {
'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket) # 这里演示的是去重功能
{
'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket # 快速判断元素是否在集合内
True
>>> 'crabgrass' in basket
False
>>> # 下面展示两个集合间的运算.
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a
{
'a', 'r', 'b', 'c', 'd'}
>>> a - b # 集合a中包含而集合b中不包含的元素
{
'r', 'd', 'b'}
>>> a | b # 集合a或b中包含的所有元素
{
'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # 集合a和b中都包含了的元素
{
'a', 'c'}
>>> a ^ b # 不同时包含于a和b的元素
{
'r', 'd', 'b', 'm', 'z', 'l'}
목록 이해와 마찬가지로 집합도 집합 이해를 지원합니다.
>>> a = {
x for x in 'abracadabra' if x not in 'abc'}
>>> a
{
'r', 'd'}
컬렉션에 대한 기본 작업
1. 요소 추가
구문 형식은 다음과 같습니다.
s.add( x )
요소 x를 집합 s에 추가하거나 요소가 이미 존재하는 경우 아무 작업도 수행하지 않습니다.
>>> thisset = set(("Google", "Tarzan", "Taobao"))
>>> thisset.add("Facebook")
>>> print(thisset)
{
'Taobao', 'Facebook', 'Google', 'Tarzan'}
요소를 추가할 수 있는 또 다른 방법이 있으며 매개변수는 목록, 튜플, 사전 등이 될 수 있습니다. 구문 형식은 다음과 같습니다.
s.update( x )
x가 여러 개 있을 수 있으며 쉼표로 구분됩니다.
>>> thisset = set(("Google", "Tarzan", "Taobao"))
>>> thisset.update({
1,3})
>>> print(thisset)
{
1, 3, 'Google', 'Taobao', 'Tarzan'}
>>> thisset.update([1,4],[5,6])
>>> print(thisset)
{
1, 3, 4, 5, 6, 'Google', 'Taobao', 'Tarzan'}
>>>
2. 요소 제거
구문 형식은 다음과 같습니다.
s.remove( x )
세트 s에서 요소 x를 제거하거나 요소가 존재하지 않으면 오류를 발생시킵니다.
>>> thisset = set(("Google", "Tarzan", "Taobao"))
>>> thisset.remove("Taobao")
>>> print(thisset)
{
'Google', 'Tarzan'}
>>> thisset.remove("Facebook") # 不存在会发生错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'Facebook'
>>>
또한, 컬렉션에 있는 요소를 제거하는 방법도 있는데, 해당 요소가 존재하지 않는 경우에도 오류가 발생하지 않습니다. 형식은 다음과 같습니다.
s.discard( x )
코드 예
>>> thisset = set(("Google", "Tarzan", "Taobao"))
>>> thisset.discard("Facebook") # 不存在不会发生错误
>>> print(thisset)
{
'Taobao', 'Google', 'Tarzan'}
컬렉션의 요소를 무작위로 삭제하도록 설정할 수도 있으며 구문 형식은 다음과 같습니다.
s.pop()
스크립트 모드의 예:
thisset = set(("Google", "Tarzan", "Taobao", "Facebook"))
x = thisset.pop()
print("随机删除元素:"+x)
출력 결과:
타잔
여러 번 실행하면 테스트 결과가 다릅니다.
세트 컬렉션의 pop 메소드는 컬렉션을 순서 없이 정렬한 다음, 순서 없는 컬렉션의 왼쪽에 있는 첫 번째 요소를 삭제합니다.
3. 설정된 요소의 수를 계산합니다.
구문 형식은 다음과 같습니다.
len(s)
대화형 모드에서는 집합의 요소 수를 셉니다.
>>> thisset = set(("Google", "Tarzan", "Taobao"))
>>> len(thisset)
3
4. 빈 컬렉션
구문 형식은 다음과 같습니다.
s.clear()
빈 컬렉션 s.
대화형 모드의 예:
>>> thisset = set(("Google", "Tarzan", "Taobao"))
>>> thisset.clear()
>>> print(thisset)
set()
5. 해당 요소가 컬렉션에 존재하는지 확인
구문 형식은 다음과 같습니다.
x in s
요소 x가 집합 s에 있는지 확인하고, 존재하면 True를 반환하고, 존재하지 않으면 False를 반환합니다.
대화형 모드의 예:
>>> thisset = set(("Google", "Tarzan", "Taobao"))
>>> "Tarzan" in thisset
True
>>> "Facebook" in thisset
False
>>>
컬렉션 내장 메소드의 전체 목록
방법 | 설명하다 |
---|---|
추가하다() | 세트에 요소 추가 |
분명한() | 세트에서 모든 요소를 제거 |
복사() | 컬렉션 복사 |
차이점() | 여러 집합의 차이를 반환합니다. |
차이_업데이트() | 지정된 컬렉션에도 존재하는 컬렉션에서 요소를 제거합니다. |
버리다() | 컬렉션에서 지정된 요소를 제거합니다. |
교차점() | 세트의 교집합을 반환합니다. |
교차로_업데이트() | 세트의 교집합을 반환합니다. |
isdisjoint() | 두 컬렉션에 동일한 요소가 포함되어 있는지 확인하고, 그렇지 않으면 True를 반환하고, 그렇지 않으면 False를 반환합니다. |
issubset() | 지정된 컬렉션이 메서드 매개 변수 컬렉션의 하위 집합인지 확인합니다. |
슈퍼세트() | 메서드의 매개변수 집합이 지정된 집합의 하위 집합인지 확인 |
팝() | 무작위로 요소 제거 |
제거하다() | 지정된 요소 제거 |
대칭_차이() | 두 컬렉션 모두에서 고유한 요소의 컬렉션을 반환합니다. |
대칭_차이_업데이트() | 지정된 다른 컬렉션에 있는 현재 컬렉션의 동일한 요소를 제거하고 지정된 다른 컬렉션의 다른 요소를 현재 컬렉션에 삽입합니다. |
노동 조합() | 두 컬렉션의 합집합을 반환합니다. |
업데이트() | 컬렉션에 요소 추가 |