Python 입문 튜토리얼 | Python3 컬렉션(세트)

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() 지정된 컬렉션이 메서드 매개 변수 컬렉션의 하위 집합인지 확인합니다.
슈퍼세트() 메서드의 매개변수 집합이 지정된 집합의 하위 집합인지 확인
팝() 무작위로 요소 제거
제거하다() 지정된 요소 제거
대칭_차이() 두 컬렉션 모두에서 고유한 요소의 컬렉션을 반환합니다.
대칭_차이_업데이트() 지정된 다른 컬렉션에 있는 현재 컬렉션의 동일한 요소를 제거하고 지정된 다른 컬렉션의 다른 요소를 현재 컬렉션에 삽입합니다.
노동 조합() 두 컬렉션의 합집합을 반환합니다.
업데이트() 컬렉션에 요소 추가

추천

출처blog.csdn.net/weixin_40986713/article/details/132661423