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()
相关文章
|
6月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
411 1
|
7月前
|
IDE 开发工具 开发者
Python类型注解:提升代码可读性与健壮性
Python类型注解:提升代码可读性与健壮性
368 102
|
7月前
|
存储 JSON 算法
Python集合:高效处理无序唯一数据的利器
Python集合是一种高效的数据结构,具备自动去重、快速成员检测和无序性等特点,适用于数据去重、集合运算和性能优化等场景。本文通过实例详解其用法与技巧。
208 0
|
8月前
|
存储 索引 Python
python 集合的所有基础知识
python 集合的所有基础知识
786 0
|
6月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
286 4
|
7月前
|
机器学习/深度学习 数据采集 并行计算
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
796 2
|
8月前
|
安全 JavaScript Java
Python中None与NoneType的真相:从单例对象到类型系统的深度解析
本文通过10个真实场景,深入解析Python中表示“空值”的None与NoneType。从单例模式、函数返回值,到类型注解、性能优化,全面揭示None在语言设计与实际编程中的核心作用,帮助开发者正确高效地处理“无值”状态,写出更健壮、清晰的Python代码。
773 3
|
8月前
|
缓存 数据可视化 Linux
Python文件/目录比较实战:排除特定类型的实用技巧
本文通过四个实战案例,详解如何使用Python比较目录差异并灵活排除特定文件,涵盖基础比较、大文件处理、跨平台适配与可视化报告生成,助力开发者高效完成目录同步与数据校验任务。
278 0
|
8月前
|
IDE API 开发工具
Python类型注解:让代码“开口说话”的隐形助手
Python类型注解为动态语言增添类型信息,提升代码可读性与健壮性。通过变量、函数参数及返回值的类型标注,配合工具如mypy、IDE智能提示,可提前发现类型错误,降低调试与协作成本。本文详解类型注解的实战技巧、生态支持及最佳实践,助你写出更高质量的Python代码。
339 0
|
11月前
|
Python
Python技术解析:了解数字类型及数据类型转换的方法。
在Python的世界里,数字并不只是简单的数学符号,他们更多的是一种生动有趣的语言,用来表达我们的思维和创意。希望你从这个小小的讲解中学到了有趣的内容,用Python的魔法揭示数字的奥秘。
245 26

推荐镜像

更多
下一篇
开通oss服务