Python组合数据类型——集合类型:集合

简介: Python内置数据结构之一,与列表,字典一样都属于可变序列,集合是没有value的字典,集合中的元素是无序的,元素不可以重复。

一、什么是集合

  1. Python内置数据结构之一
  2. 与列表,字典一样都属于可变序列
  3. 集合是没有value的字典
  4. 集合中的元素是无序的,元素不可以重复

1.集合操作符

操作符的运算 描述
S-T 返回一个新集合,包括在集合S中但不会在集合T
S&T 返回一个新集合,包括同时在集合ST中的元素
S^T 返回一个新集合,包括ST中的非共同元素
`S\ T` 返回一个新集合,包括集合ST中的所有元素

2.常用集合操作函数或方法

函数或方法 描述
S.add(x) 如果数据项x不在S中,将x增加到S
S.remove(x) 如果x集合在S中,移除该元素;不在则产生KeyError异常
S.clear() 移除S中的数据项
len(S) 返回集合S的元素个数
x in S 如果xs的元素,返回True;否则返回False
x not in S 如果xs的元素,返回True;否则返回False

3.内置数据结构set源码

Python内置数据结构集合类class set(object)源码解析:

class set(object):  # set类
    """
           set() ->新的空集合对象
        set (iterable) ->新设置对象
        构建独特元素的无序集合。
    """
    def add(self, *args, **kwargs): # real signature unknown
        """
        向集合中添加一个元素。
        如果该元素已经存在,则不会产生任何影响。
        """
        pass

    def clear(self, *args, **kwargs): # real signature unknown
        """ 从这个集合中删除所有元素。 """
        pass

    def copy(self, *args, **kwargs): # real signature unknown
        """ Return a shallow copy of a set. 
            返回集合的浅副本。
        """
        pass

    def difference(self, *args, **kwargs): # real signature unknown
        """
        返回两个或多个集合的差值作为新集合。
        (即所有在这个集合中的元素,而不是其他集合中的元素。)
        """
        pass

    def difference_update(self, *args, **kwargs): # real signature unknown
        """ 从这个集合中删除另一个集合的所有元素 """
        pass

    def discard(self, *args, **kwargs): # real signature unknown
        """
        从集合中移除一个元素,如果它是成员。
        如果元素不是成员,则不执行任何操作。
        """
        pass

    def intersection(self, *args, **kwargs): # real signature unknown
        """
        返回两个集合的交集作为新集合。
        (即两个集合中的所有元素。)
        """
        pass

    def intersection_update(self, *args, **kwargs): # real signature unknown
        """ Update a set with the intersection of itself and another. """
        pass

    def isdisjoint(self, *args, **kwargs): # real signature unknown
        """ Return True if two sets have a null intersection. """
        pass

    def issubset(self, *args, **kwargs): # real signature unknown
        """ 报告另一个集合是否包含此集合。 """
        pass

    def issuperset(self, *args, **kwargs): # real signature unknown
        """ 报告此集合是否包含另一个集合。 """
        pass

    def pop(self, *args, **kwargs): # real signature unknown
        """
        删除并返回任意的set元素。
        如果该集合为空则引发KeyError。
        """
        pass

    def remove(self, *args, **kwargs): # real signature unknown
        """
        从集合中移除一个元素;它必须是成员。
        如果元素不是成员,则引发KeyError。
        """
        pass

    def symmetric_difference(self, *args, **kwargs): # real signature unknown
        """
        Return the symmetric difference of two sets as a new set.
        
        (i.e. all elements that are in exactly one of the sets.)
        """
        pass

    def symmetric_difference_update(self, *args, **kwargs): # real signature unknown
        """ Update a set with the symmetric difference of itself and another. """
        pass

    def union(self, *args, **kwargs): # real signature unknown
        """
        Return the union of sets as a new set.
        
        (i.e. all elements that are in either set.)
        """
        pass

    def update(self, *args, **kwargs): # real signature unknown
        """ 使用自身和其他集合的并集更新集合。 """
        pass

    def __and__(self, *args, **kwargs): # real signature unknown
        """ Return self&value. """
        pass

    def __contains__(self, y): # real signature unknown; restored from __doc__
        """ x.__contains__(y) <==> y in x. """
        pass

    def __eq__(self, *args, **kwargs): # real signature unknown
        """ Return self==value. """
        pass

    def __getattribute__(self, *args, **kwargs): # real signature unknown
        """ Return getattr(self, name). """
        pass

    def __ge__(self, *args, **kwargs): # real signature unknown
        """ Return self>=value. """
        pass

    def __gt__(self, *args, **kwargs): # real signature unknown
        """ Return self>value. """
        pass

    def __iand__(self, *args, **kwargs): # real signature unknown
        """ Return self&=value. """
        pass

    def __init__(self, seq=()): # known special case of set.__init__
        """
        set() -> new empty set object
        set(iterable) -> new set object
        
        Build an unordered collection of unique elements.
        # (copied from class doc)
        """
        pass

    def __ior__(self, *args, **kwargs): # real signature unknown
        """ Return self|=value. """
        pass

    def __isub__(self, *args, **kwargs): # real signature unknown
        """ Return self-=value. """
        pass

    def __iter__(self, *args, **kwargs): # real signature unknown
        """ Implement iter(self). """
        pass

    def __ixor__(self, *args, **kwargs): # real signature unknown
        """ Return self^=value. """
        pass

    def __len__(self, *args, **kwargs): # real signature unknown
        """ Return len(self). """
        pass

    def __le__(self, *args, **kwargs): # real signature unknown
        """ Return self<=value. """
        pass

    def __lt__(self, *args, **kwargs): # real signature unknown
        """ Return self<value. """
        pass

    @staticmethod # known case of __new__
    def __new__(*args, **kwargs): # real signature unknown
        """ Create and return a new object.  See help(type) for accurate signature. """
        pass

    def __ne__(self, *args, **kwargs): # real signature unknown
        """ Return self!=value. """
        pass

    def __or__(self, *args, **kwargs): # real signature unknown
        """ Return self|value. """
        pass

    def __rand__(self, *args, **kwargs): # real signature unknown
        """ Return value&self. """
        pass

    def __reduce__(self, *args, **kwargs): # real signature unknown
        """ Return state information for pickling. """
        pass

    def __repr__(self, *args, **kwargs): # real signature unknown
        """ Return repr(self). """
        pass

    def __ror__(self, *args, **kwargs): # real signature unknown
        """ Return value|self. """
        pass

    def __rsub__(self, *args, **kwargs): # real signature unknown
        """ Return value-self. """
        pass

    def __rxor__(self, *args, **kwargs): # real signature unknown
        """ Return value^self. """
        pass

    def __sizeof__(self): # real signature unknown; restored from __doc__
        """ S.__sizeof__() -> size of S in memory, in bytes """
        pass

    def __sub__(self, *args, **kwargs): # real signature unknown
        """ Return self-value. """
        pass

    def __xor__(self, *args, **kwargs): # real signature unknown
        """ Return self^value. """
        pass

    __hash__ = None

二、集合的创建方式

1. 使用 {}

s = {1, 2, 3, 4, 5, 6, 6}
print(s)
# {1, 2, 3, 4, 5, 6}

2. 使用内置函数 set()

s1 = set(range(1, 7))
print(s1)
# {1, 2, 3, 4, 5, 6}
print(set('python'))
# {'p', 'h', 'n', 'o', 't', 'y'}

三、集合的相关操作

1.集合元素的判断操作

操作函数 描述
a in s 如果as的元素,返回True;否则返回False
a not in s 如果 a不是s的元素,返回True;否则返回False
# 判断元素是否在集合中
s = {10, 20, 30, 40, 50, 100}
print(10 in s)  # True
print(10 not in s)  # False

2.集合的新增操作

# 集合元素的新增操作
s = {10, 20, 30, 40, 50, 100}
s.add(80)  # 添加一个元素
print(s)  
# {100, 40, 10, 80, 50, 20, 30}
s.update({66, 77, 88})  # 添加多个元素(一次至少添加一个元素 )
print(s)
# {66, 100, 40, 10, 77, 80, 50, 20, 88, 30}
s.update((11, 22, 33))
print(s)
# {33, 66, 100, 40, 10, 11, 77, 80, 50, 20, 22, 88, 30}

3.集合的删除操作

# 集合元素的删除操作
#  1.调用remove方法,一次删除一个指定元素,元素不存在抛异常
s.remove(100)
print(s)
# {33, 66, 40, 10, 11, 77, 80, 50, 20, 22, 88, 30}

# 2.调用discard方法,一次删除一个指定元素,元素不存在不抛异常
s.discard(300)
print(s)
# {33, 66, 40, 10, 11, 77, 80, 50, 20, 22, 88, 30}

# 3.调用pop方法,一次只删除一个任意元素
s.pop()
print(s)
# {66, 40, 10, 11, 77, 80, 50, 20, 22, 88, 30}

# 4.调用clear方法,清空集合
s.clear()
print(s)
# set()
相关文章
|
7天前
|
IDE 开发工具 开发者
Python类型注解:提升代码可读性与健壮性
Python类型注解:提升代码可读性与健壮性
166 102
|
10天前
|
机器学习/深度学习 数据采集 并行计算
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
103 2
|
5月前
|
索引 Python
Python的变量和简单类型
本文介绍了Python中变量命名规则、常用变量类型及字符串操作。变量命名需遵循字母、数字和下划线组合,不能以数字开头且不可与关键字冲突。字符串支持单引号、双引号或三引号定义,涵盖基本输出、转义字符、索引、拼接等操作。此外,还详细解析了字符串方法如`islower()`、`upper()`、`count()`等,帮助理解字符串处理技巧。
130 15
|
1月前
|
安全 JavaScript Java
Python中None与NoneType的真相:从单例对象到类型系统的深度解析
本文通过10个真实场景,深入解析Python中表示“空值”的None与NoneType。从单例模式、函数返回值,到类型注解、性能优化,全面揭示None在语言设计与实际编程中的核心作用,帮助开发者正确高效地处理“无值”状态,写出更健壮、清晰的Python代码。
163 3
|
1月前
|
缓存 数据可视化 Linux
Python文件/目录比较实战:排除特定类型的实用技巧
本文通过四个实战案例,详解如何使用Python比较目录差异并灵活排除特定文件,涵盖基础比较、大文件处理、跨平台适配与可视化报告生成,助力开发者高效完成目录同步与数据校验任务。
96 0
|
1月前
|
IDE API 开发工具
Python类型注解:让代码“开口说话”的隐形助手
Python类型注解为动态语言增添类型信息,提升代码可读性与健壮性。通过变量、函数参数及返回值的类型标注,配合工具如mypy、IDE智能提示,可提前发现类型错误,降低调试与协作成本。本文详解类型注解的实战技巧、生态支持及最佳实践,助你写出更高质量的Python代码。
118 0
|
2月前
|
人工智能 Python
python基本数据类型简介
本文简要介绍了Python的基本数据类型,包括整型、浮点型、字符串、列表、字典和布尔类型,帮助读者对Python数据类型有初步了解。
111 0
|
2月前
|
存储 安全 开发者
Python中的数据类型详解
Python是一种动态类型编程语言,具备丰富的数据类型,包括数值类型、序列类型、映射类型和集合类型等。这些类型为高效编程提供了强大支持。
|
4月前
|
Python
Python技术解析:了解数字类型及数据类型转换的方法。
在Python的世界里,数字并不只是简单的数学符号,他们更多的是一种生动有趣的语言,用来表达我们的思维和创意。希望你从这个小小的讲解中学到了有趣的内容,用Python的魔法揭示数字的奥秘。
121 26
|
4月前
|
人工智能 安全 IDE
Python 的类型安全是如何实现的?
本文探讨了 Python 的类型安全实现方式。从 3.5 版本起,Python 引入类型提示(Type Hints),结合静态检查工具(如 mypy)和运行时验证库(如 pydantic),增强类型安全性。类型提示仅用于开发阶段的静态分析,不影响运行时行为,支持渐进式类型化,保留动态语言灵活性。泛型机制进一步提升通用代码的类型安全性。总结而言,Python 的类型系统是动态且可选的,兼顾灵活性与安全性,符合“显式优于隐式”的设计哲学。

推荐镜像

更多