Python知识点精汇:集合篇精解!

server/2024/11/25 23:10:46/

目录

一、集合是什么?

二、集合长什么样?

三、集合的一些操作

(1)添加新元素

(2)移出一个元素

(3)随机取出一个元素

(4)清空集合

四、集合间的操作

(1)取两个集合的差集

(2)消除两个集合的差集

(3)两个集合的合并

(4)交集

(5)判断两个集合是否包含相同元素

(6)判断集合1所有元素是否都在集合2中

五、集合的遍历


一、集合是什么?

标准解释:集合(set)是一个无序且不重复元素的序列。

简单来说,你可以将它理解为一个存放元素的容器。

二、集合长什么样?

集合有两种表示方法:

第一种:用 { } 来表示。

例如:

a={1,2,3,4}

第二种:用set()函数来创建。

例如:

b=set([1,2,3,4])

其中a与b,若进行print输出,效果是一样的

注:set括号里的 [ ] 其实可以改成 ( ) 

TIPS:注意,创建一个空集合时,必须用set()即输入:b=set()   而不能用 { } 创建,因为 { } 是创建一个空字典。字典我们会在后续篇章里详细讲到。

三、集合的一些操作

(1)添加新元素

添加新元素,也是两种方法。

第一种:使用add

例如:

python">a={1,2,3,4}
a.add("小王")    #将“小王”作为元素,添加到集合a中
print(a)

但是add也有弊端,那就是它只能添加一个元素。如果要添加多个元素,就要用到下面这种方法。

第二种:使用update函数

例如:

python">a={1,2,3,4}
a.update({"小王",1,5})    #添加元素“小王”,1,5
print(a)#系统输出:{1, 2, 3, 4, '小王', 5}
#因为集合元素具有唯一性,所以只输出一个1

同样有点需要注意,如果你是用set()创建的集合,那么在你添加元素时,应该进行如下操作:

python">b=set([1,2,3,4])
b.update([5,2,8])
print(b)

 系统输出:{1, 2, 3, 4, 5, 8}

tips:b.update([5,2,8])其实也可以写成b.update([5],[2,8]),他们俩在结果上没有任何区别,唯一有点不同的是一个是将两个列表作为独立参数传给 update(),一个是将一个包含多个元素的列表作为单一参数传给 update()

(2)移出一个元素

移出元素,我们通常用remove

用法如下:

python">a={1,2,3,4}
a.remove(1)    #移出元素1
print(a)

系统输出:{2, 3, 4}

但是同样的,这个用法也有局限性,它只能移出一个元素,并且如果你要移出的元素不在该集合内,它就会报错

所以我们还有第二个函数:discard        虽然它也只能移出一个元素,但是它不会报错啊

 用法如下:

那么,如何删除多个元素呢?

我们可以使用for循环,大家可以自己尝试一把,另外如果嫌麻烦,我们还有第三个函数 difference_update

(3)随机取出一个元素

用pop,用法如下:

但我们要注意,这里是取出,意味着原集合a也会被修改掉哦。

如果你有疑问,为啥自己每次运行都是取出的第一个元素,那它可能是因为:某些 Python 版本或环境可能会在特定的情况下表现得像是有顺序的。比如你使用的是较老版本的 Python,或者某些定制的环境。(总的来说,无须在意好吧)

如果你实在想随机一个,那么建议你结合一下random函数

(4)清空集合

这里使用clear()函数

系统输出set(),意思就是没有了。

四、集合间的操作

(1)取两个集合的差集

使用格式:

集合1.difference(集合2)

功能:集合1有而集合2没有

示例:

(2)消除两个集合的差集

想到这里,是不是跟移出一个元素有些像,没错,这里就是difference_update

格式:集合1.difference_update(集合2)

功能:删掉集合1中跟2相同的

示例:

tips:这里不要用

c=a.difference_update(b)
print(c)

因为difference_update不返回值,所以最终只会输出None哦

(3)两个集合的合并

union函数,话不多说,上图:

(4)交集

格式:

d=集合1.intersection(集合2,集合3,……)

示例:

(5)判断两个集合是否包含相同元素

 如果有相同元素,输出False

 如果不同元素,输出True

格式:集合1.isdisjoint(集合2)
示例:因为有相同元素,所以输出False

(6)判断集合1所有元素是否都在集合2中

格式:集合1.issubset(集合2)

五、集合的遍历

注意,集合不支持下表索引!!!所以不能用while

这里,我们用for循环


http://www.ppmy.cn/server/144919.html

相关文章

【论文笔记】Improved Baselines with Visual Instruction Tuning

🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 基本信息 标题: Improved Baselines with …

【青牛科技】芯麦 GC2003:白色家电与安防领域中 ULN2003 的理想替代者

在白色家电和安防产品的电子元件世界里,驱动芯片的选择至关重要。今天我们要介绍的是芯麦 GC2003,一款能够完美替代 ULN2003 的优秀芯片,为这些产品带来卓越的性能提升。 一、GC2003 的突出特点 (一)优越的电气性能 …

绿光一字线激光模组:工业制造与科技创新的得力助手

在现代工业制造和科技创新领域,绿光一字线激光模组以其独特的性能和广泛的应用前景,成为了不可或缺的关键设备。这种激光模组能够发射出一条明亮且精确的绿色激光线,具有高精度、高稳定性和长寿命的特点,为各种精密加工和测量需求…

Linux上安装单机版ElasticSearch6.8.1

1、准备安装包,上传至Linux并解压 elasticsearch-6.8.1.tar.gz 链接:https://pan.baidu.com/s/1jsXny2s8fv6qkNIxdIrBoA 提取码:vbi6 解压安装包 tar -zxvf elasticsearch-6.8.1.tar.gz 2、ElasticSearch不能以Root身份运行,需要…

23种设计模式之建设者设计模式

目录 1. 简介2. 代码2.1 Car2.2 Builder2.3 CarBuilder2.4 Engineer2.5 Test 3. 总结 1. 简介 建造者模式(Builder Pattern)是一种创建型设计模式。它将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。简单来说…

基于Java Springboot海洋馆预约系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

udp_socket

文章目录 UDP服务器封装系统调用socketbind系统调用bzero结构体清0sin_family端口号ip地址inet_addrrecvfromsendto 新指令 netstat -naup (-nlup)包装器 的两种类型重命名方式包装器使用统一可调用类型 关键字 typedef 类型重命名系统调用popen关于inet_ntoa UDP服务器封装 系…

【C++】模拟实现 list:双向链表的构建与解析

🌟快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 🌟 如果你对 list 概念还存在疑惑,欢迎阅读我之前的深入了解: 🔥🔥🔥【…