Python学习-集合

从零学Python:第十四课-常用数据结构之集合 在学习了列表和元组之后,我们再来学习一种容器型的数据类型,它的名字叫集合(set)。说到集合这个词大家一定不会陌生,在数学课本上就有这个概念。通常我们对集合的定义是“把一定范围的、确定的、可以区别的事物当作一个整体来看待”,集合中的各个事物通常称为集合的元素。集合应该满足以下特性: 无序性:一个集合中,每个元素的地位都是相同的,元素之间是无序的。 互异性:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次。 确定性:给定一个集合,任给一个元素,该元素或者属于或者不属于该集合,二者必居其一 阅读详情

十八、集合

1、集合最大的特性是:唯一性,集合中所有的元素都应该是独一无二的,并且也是无序的。

2、创建集合
1)使用花括号{}

>>>{"FishC","Python"}
{'FishC', 'Python'}

2)集合推导式:无序随机

>>>{s for s in "FishC"}
{'i', 'C', 's', 'F', 'h'}

3)使用类型构造器

>>>set("FishC")
{'i', 'C', 's', 'F', 'h'}

注意:由于集合是无序的,所以我们不能使用下标索引的方式来对它进行访问

3、in和not in:判断某个元素是否存在于集合中

>>>s = set("FishC")
>>>'C' in s
True
>>>''c' not in s
True

4、访问集合中的元素,可以使用迭代的方式

>>>for each in s:
>>>    print(each)
 
    
i
C
s
F
h
 

5、去重:利用集合的唯一性

>>>set([1,1,2,3,5])
{1, 2, 3, 5}

6、检测一个列表中是否存在相同的元素

>>>s = [1,1,2,3,5]
>>>len(s) == len(set(s))
False

7、集合的各类方法:(注意others说明支持多个参数,other表示只支持一个参数)

方法 含义
s.copy() 返回s集合的一个浅拷贝
s.isdisjoint(other) 如果s集合中没有于other容器存在共同的元素,那么返回True,否则返回False
s.issubset(other) 如果s集合是other容器的子集,那么返回True,否则返回False
s.issuperset(other) 如果s集合是other容器的超集,那么返回True,否则返回False
s.union(*others) 返回一个新集合,其内容是s集合与other容器的并集
s.intersection(*others) 返回一个新集合,其内容是s集合与other容器的交集
s.difference(*others) 返回一个新集合,其内容是存在于s集合中,但不存在于other容器中的元素
s.symmetric_difference(other) 返回一个新集合,其内容是排除掉s集合和other容器中共有的元素后,剩余的所有元素

举例:
#s.copy():浅拷贝

>>>t = s.copy()
>>>t
[1, 1, 2, 3, 5]

#isdisjoint():检测两个集合之间是否毫不相干,有无共同的元素

>>>s = set("FishC")
>>>s
>>>{'i', 'C', 's', 'F', 'h'}
>>>s.isdisjoint(set("Python"))
#有一个交集h
False

#issubse():检测集合是否另一个集合的子集
子集:对于两个集合A、B,如果集合A中任意一个元素都是集合B中的元素,我们就说这两个集合有包含关系,称集合A为集合B的子集。

>>>s.issubset("FishC.com.cn")
True

#issuperset():检测集合是否是另一个集合的超集
超集:对于两个集合A、B,如果集合B中任意一个元素都是集合A中的元素,我们就说这两个集合有包含关系,称集合A为集合B的超集

>>>s.issuperset("Fish")
True

#计算当前集合和其他对象共同构建的并集、交集、差集以及对称差集
#union():并集:对于两个集合A、B,把他们所有的元素合并在一起组成的集合,叫做集合A与集合B的并集

>>>s.union({1,2,3})
{1, 'i', 'F', 2, 3, 'h', 'C', 's'}

#intersection():交集:对于两个集合A、B,由所有属于集合A且属于集合B的元素所组成的集合,叫做集合A与集合B的交集

>>>s.intersection("Fish")
{'F', 's', 'i', 'h'}

#difference():差集:对于两个集合A、B,由所有属于集合A且不属于集合B的元素所组成的集合,叫做集合A与集合B的差集

>>>s.difference("Fish")
{'C'}

#symmetric_difference():对称差集:对于两个集合A、B,先排除集合A与集合B的所有共同元素,由剩余的元素组成的集合,叫做集合A与集合B的对称差集

>>>s.symmetric_difference("Python")
{'y', 'i', 'o', 'C', 'n', 's', 't', 'F', 'P'}

8、运算符运算集合
1)子集 <=

>>>s <= set("FishC")
True

2)真子集 <

>>>s < set("FishC")
False
>>>s < set("FishC.com.cn")
True

3)超集 >=

>>>s >= set("FishC")
True

4)真超集 >

>>>s > set("FishC")
False

5)并集 | (管道符)

>>>s | {1,2,3} |set ("Python")
{'y', 1, 'i', 2, 3, 'o', 'C', 'n', 's', 't', 'F', 'h', 'P'}

6)交集 &

>>>s & set("Php") &set("Python")
{'h'}

7)差集 -

>>>s - set("Php") - set("Python")
{'i', 's', 'F', 'C'}

8)对称差集 ^ (脱字符)

>>>s ^ set("Python")
{'y', 'i', 't', 'o', 'C', 'n', 's', 'F', 'P'}

注意:使用运算符的话,符号两边都必须是集合类型的数据才行

>>>s <= "FishC"
Traceback (most recent call last):
  File "<pyshell#102>", line 1, in <module>
    s <= "FishC"
TypeError: '<=' not supported between instances of 'set' and 'str'

9、集合分为可变对象set()和不可变对象frozenset()

>>>t = frozenset("FishC")
>>>t
frozenset({'i', 'C', 's', 'F', 'h'})
#因为集合的唯一性,所以列表中的1被去重了,又因为集合的无序性,所有加入的23,有可能会出现3在2前面
>>> s.update([1,1],"23")
>>> s
{'3', 1, 'F', 'C', 's', '2', 'i', 'h'}

#frozenset的集合是不可变的,如果进行改变会报错

>>> t = frozenset("FishC")
>>> t
frozenset({'F', 'C', 's', 'i', 'h'})
>>> t.update([1,1],"23")
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    t.update([1,1],"23")
AttributeError: 'frozenset' object has no attribute 'update'

2)intersection_update(*others)、difference_update(*others)、symmetric_difference_update(others)
以交集、差集和对称差集的方式来更新集合,会将结合的值修改。

>>> s.intersection_update("FishC")
>>> s
{'F', 'C', 's', 'i', 'h'}
>>> s.difference_update("Php","Python")
>>> s
{'F', 'C', 's', 'i'}
>>> s.symmetric_difference_update("Python")
>>> s
{'F', 'n', 'C', 'o', 'y', 's', 'i', 'P', 't', 'h'}

3)add(elem):往集合里添加某个数据
注意区别:uppdate方法,传入字符串是迭代获取其中每个字符,作为元素插入到集合中;
add方法传入字符串,是将整个字符串作为一个元素插入到集合中。

>>> s.add("45")
>>> s
{'45', 'F', 'n', 'C', 'o', 'y', 's', 'i', 'P', 't', 'h'}

4)remove(elem)、discard(elem):删除某个元素
注意:remove(elem)、discard(elem)两者的区别是如果指定的元素不存在,remove方法会抛出异常,而discard方法则会静默处理。

>>> s.remove("瓦特")
Traceback (most recent call last):
  File "<pyshell#16>", line 1, in <module>
    s.remove("瓦特")
KeyError: '瓦特'
>>> s.discard("瓦特")
>>> s
{'45', 'F', 'n', 'C', 'o', 'y', 's', 'i', 'P', 't', 'h'}

5)pop()方法用于随机从集合中弹出一个元素

>>> s.pop()
'45'
>>> s.pop()
'F'
>>> s.pop()
'n'
>>> s
{'C', 'o', 'y', 's', 'i', 'P', 't', 'h'}

6)clear():清空集合

>>> s.clear()
>>> s
set()

10、可哈希:如果一个对象是可哈希的,那么要求它的哈希值,必须在其整个程序的生命周期中保持不变。
想要正确的创建集合和字典,刚性需求,要求字典的键和集合的元素都必须是可哈希的。
1)hash(object)函数:获取对象的哈希值
1.如果对一个整数进行哈希,求其哈希值,那么它的值永远都等于它的自身
2.如果两个对象的值是相等的,尽管他们是不同的对象,那么它们的哈希值也是相等的

>>> hash(1)
1
>>> hash(1.0)
1
>>> hash(1.001)
2305843009213441
Python中大多数不可变的对象都是可哈希的。而不可变的对象,则是不可哈希的。
>>> hash("FishC")
6273830742685173857
>>> hash([1,2,3])
Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module>
    hash([1,2,3])
TypeError: unhashable type: 'list'
>>> hash((1,2,3))
529344067295497451

2)字典的键和集合中的元素都必须是可哈希的。

>>> {"Python":520,"FishC":1314}
{'Python': 520, 'FishC': 1314}
>>> {[1,2,3]:"FishC"}
Traceback (most recent call last):
  File "<pyshell#32>", line 1, in <module>
    {[1,2,3]:"FishC"}
TypeError: unhashable type: 'list'
>>> {"Python","FishC",520,1314}
{520, 'FishC', 1314, 'Python'}
>>> {"Python","FishC",520,1314,[1,2,3]}
Traceback (most recent call last):
  File "<pyshell#33>", line 1, in <module>
    {"Python","FishC",520,1314,[1,2,3]}
TypeError: unhashable type: 'list'

3)集合是不可嵌套的,但可以使用frozenset来实现

>>> x = {1,2,3}
>>> y = {x,4,5}
Traceback (most recent call last):
  File "<pyshell#36>", line 1, in <module>
    y = {x,4,5}
TypeError: unhashable type: 'set'
 
>>> x =frozenset(x)
>>> y = {x,4,5}
>>> y
{frozenset({1, 2, 3}), 4, 5}
 
Python学习: 集合 需要注意的是,集合中的元素必须是不可变的(immutable),例如数字、字符串、元组等。需要注意的是,判断一个元素是否存在于集合中的时间复杂度是 O(1),因为集合是基于哈希表实现的。集合中的元素必须是不可变的(immutable),例如数字、字符串、元组等。方法来清空一个集合,将集合中的所有元素移除,使其变为空集。函数返回集合中元素的个数,即集合的大小。方法弹出的元素是随机的,不能确定弹出的具体元素是哪个。:可以向集合中添加、删除元素,但集合本身是可变的。:集合中的元素是互不相同的,不会出现重复元素。 阅读详情

相关推荐

Python机器学习与深度学习库集合下载

机器学习库是数据科学和人工智能应用中的核心组件,它们提供了执行复杂算法和数据处理任务所需的抽象和接口。机器学习库简化了算法的实现细节,使得研究人员和工程师能够更加专注于模型的训练和优化,而不是从零开始编写大量底层代码。自20世纪末以来,机器学习库的发展经历了多个阶段。从最初的MATLAB和R等语言的统计包,到如今广泛使用的Python机器学习库,如Scikit-learn、TensorFlow和PyTorch等。这些库的出现,极大地推动了机器学习算法的普及和应用。

weixin_35752645的博客 706

python集合中的元素

python集合中的元素可以是哪些

weixin_64138343的博客 1281

银河麒麟V10SP1实战:5步搞定AD域登录(附Samba+Winbind配置详解)

本文提供银河麒麟V10 SP1操作系统无缝集成Windows AD域的实战指南。文章深入解析了Samba、Winbind与Kerberos三大核心组件的协作原理,并详细阐述了从环境准备、软件包安装、配置文件定制到执行加域及排错的全流程。特别针对2403等新版本提供了关键配置差异与避坑要点,旨在帮助企业运维人员实现高效、稳定的域环境登录与管理。

weixin_29269441的博客 293

8、python集合&函数(上)——旺仔

python:集合&函数一、集合1、集合的简介2、集合的使用3、集合的运算二、可变类型和不可变类型三、函数1、函数简介2、函数的参数3、函数的传递方式4、不定长参数5、参数类型6、参数拆包四、课后作业旺仔注: 一、集合 1、集合的简介 集合表现形式为set 集合和列表非常相似 不同点 集合只能存储不可变对象 集合中存储的对象是无序的 集合不能出现重复元素 使用{}来创建集合 可以通过set()来将序列和字典转换成集合 总结一下: 集合的最大特点是:集合里边的元素是不可重复的并且集合内的

wang_12588的博客 1103

武汉理工大学 python实验三

请编一个程序,用户在同一行内输入两个整数,代表头和脚的数量,编程计算笼中各有多少只鸡和兔(假设鸡和兔都正常,无残疾),如无解则输出`“Data Error!题目为:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?年前,《孙子算经》中记载一个有趣的问题:今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?有一座八层宝塔,每一层都有一些琉璃灯,每一层的灯数都是上一层的二倍,已知共有。编写一个宝塔上的琉璃灯的小程序,计算并输出每层各有多少盏琉璃灯。,如果有多个解,则分行输出,每行一个解;

2401_83472225的博客 5950

Ubuntu22.04下3分钟搞定GitHub加速:SwitchHosts+小鱼工具保姆级配置指南

本文提供Ubuntu22.04下快速解决GitHub下载超时问题的保姆级教程,通过SwitchHosts图形化工具和小鱼一键换源工具实现高效加速。详细步骤包括环境准备、工具安装配置及验证方法,帮助开发者轻松优化GitHub访问速度,提升工作效率。

weixin_29258297的博客 564

python中集合的元素可以是什么_python集合能做什么

python集合的用途:1、可以运用集合去重,方法为将列表加入到集合中,然后进行遍历,最后打印出去重后的结果即可;2、运用集合可以进行关系测试,例如,求差集、并集。一、什么是集合:集合(set)是一个无序的不重复元素序列。重点:集合里边的元素是不可重复的并且集合内的元素还是无序的。集合是一个可变容器集合内的数据对象都是唯一的(不能重复)集合是可迭代对象集合相当于是只有键没有值得字典(键就是集合中的...

weixin_26875543的博客 6275

INMP441麦克风与ESP32的I2S音频采集实战指南

本文提供了INMP441数字麦克风与ESP32开发板通过I2S接口进行高质量音频采集的完整实战指南。详细讲解了硬件连接、软件配置、数据读取及基础处理,并分享了常见的避坑技巧与性能优化建议,帮助开发者快速构建物联网音频应用。

weixin_28396629的博客 598

Python 基础语法:基本数据类型(集合)

在处理一些需要快速判断元素是否存在的场景,或者需要去除重复元素的场景时,集合是一个非常好的选择。集合中的元素是唯一的,即集合中不会出现重复的元素。需要注意的是,由于集合是无序的,所以每次打印集合时元素的顺序可能会有所不同,但这并不影响集合中元素的唯一性和存在性。同样地,列表和元组也可以转换为集合,但需要注意的是,集合是无序的,所以转换后的集合元素的顺序可能与原列表或元组不同。函数传入了一个包含重复元素的列表,返回的集合中也只会包含不重复的元素。方法不会抛出错误,也不会改变集合,因为集合中的元素是唯一的。

moment159的博客 2415

Python蓝色跳动的爱心(完整代码)

Python语言实现蓝色跳动的爱心的完整代码。 代码分析 这段代码使用了 库来创建一个动态的爱心图案,并在屏幕上显示带有动态效果的“我爱你”字样。以下是对这段代码的详细分析: 用于创建图形用户界面(GUI)。 用于生成随机数,主要用于控制爱心图案的扩散效果。 中的 , , , 用于数学计算,生成爱心形状和扩散效果。 包含了 等常量,用于控制控件的对齐方式。 2. 全局变量定义 , : 定义画布的大小。 , : 爱心的中心坐标。 : 用于定义爱心形状的缩放

AIGC 1920

RK3568下GPIO模拟串口

在嵌入式开发中,硬件 UART 资源可能被其他外设占用。此时,通过 GPIO 模拟 UART(软串口)成为一种灵活的解决方案。本文基于 RK3568 平台,结合 Linux 内核模块,实现高精度软串口通信,并深入分析关键技术细节。可以看到已经接收到数据了,可以自己创建自定义的设备文件到/dev下,也可以按照串口设备的标准创建一个设备,后面有时间我写一篇和标准串口设备结合的gpio模拟串口文章。RK3568 GPIO 模拟串口(软串口)实现详解。将编译好的驱动放到板子上运行。再写个Makefile。

文石_2009的博客 364

Python入门:Python3 集合全面学习教程

Python入门:Python3 集合全面学习教程,本文是 Python3 集合的全面学习教程,集合作为 Python 中独特的数据结构,凭借其去重性和集合运算能力,在数据处理、关系判断等场景中发挥着重要作用。掌握集合的创建、基本操作和运算规则,能让你的代码更简洁高效。建议多结合实际场景练习,比如用集合进行列表去重、判断元素归属关系等,加深对集合特性的理解。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 20万+

超临界二氧化碳发电技术深度解析

超临界二氧化碳发电技术正在突破传统热电转换的物理边界。作为新一代发

硬核科技 602

python学习之集合set

python学习之集合set 集合(set)是一个无序的不重复的元素序列 if __name__== '__main__': """ #1_创建集合 (1)parame={value01,value02...} (2)set(value) #set中只能有一个参数 【注】创建一个空集合必须用set()而不是{},因为{}用来创建一个空字典 """ print('\n1_创建集合...

Alvin的博客 237

强化学习从基础到进阶-案例与实践[4]:深度Q网络-DQN、double DQN、经验回放、rainbow、分布式DQN

强化学习从基础到进阶-案例与实践[4]:深度Q网络-DQN、double DQN、经验回放、rainbow、分布式DQN

丨汀、的博客 2066

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Python入门学习笔记:集合

1.集合:允许存储不重复的元素,使用一对花括号{}作定界限,元素只能是不可变类型数据。

D139898的博客 144

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【Python学习教程】集合操作的详细教程

当我们只需要存储key不需要value时就得到一个集合类型,如‘’’学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!‘’’打印出来是集合set类型。注意:创建空集合不能用s = {},这样s是字典类型,空集合应使用s = set()创建。

2401_84139095的博客 355

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【Python 集合 Set 】全面学习指南

集合(Set)是 Python 中用于存储**唯一元素**且**无序**的数据结构,支持高效的成员检测和集合运算(交集、并集等)。系统性知识整理,涵盖基础操作、高级技巧和实际应用。

qq_33764107的博客 544

Python小白学习记录7-集合

在Python中,集合(set)是一种无序的、不。

2301_78083896的博客 461

python学习2 re正则匹配,字典,集合学习

python学习2 re正则匹配,字典,集合 相关函数整理

u014267106的博客 570

【python学习】列表、元组、字典、集合(详解)

小编这些年深知大多数初中级Python工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此我收集整理了一份《2024年Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。原文链接:https://gitee.com/hh090807。

2401_88308894的博客 1846

python集合的学习以及常见操作

python集合的学习以及常见操作1、集合介绍1、简介2、定义集合2、集合的相关操作1、添加元素1、add2、update2、删除元素1、remove2、pop3、discard3、集合的交集和并集( & 和 | )1、交集1、并集 1、集合介绍 1、简介   集合是无序的,集合中的元素是唯一的,集合一般用于元祖或者列表中的元素去重 2、定义集合   定义集合     set = set()   定义空字典,集合为空时默认是字典     set = {} 2、集合的相关操作 1、添加元素 1、add

m0_50693881的博客 339

Python基础学习(五):集合

set。

weixin_45537879的博客 389

Python学习笔记:集合

集合

大田的博客 301

Python入门学习笔记——11.集合专题

############################################################ #1.集合的基本操作和常规函数 # 定义集合 vars = {123,'abc',False,'love',True,(1,2,3),0,3.1415,'123'} # 1。无序。 # 2。布尔类型 True 表示为 1,False 表示为 0,布尔和数字只存在一个 # 3。元素的值不能重复 # {0, 'abc', 'love', True, 3.1415, (1, 2, 3), 1

weixin_45758998的博客 171
上一篇: Python学习-字典
下一篇: Python学习-函数
Lizzy_Fly
博客等级 码龄5年 262粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值