网站首页 > 技术文章 正文
Python set集合最常用的操作是向集合中添加、删除元素,以及集合之间做交集、并集、差集等运算,本节将一一讲解这些操作的具体实现。
向set集合中添加元素
set集合中添加元素,可以使用set类型提供的add()方法实现,该方法的语法格式为:
setname.add(element)1复制代码类型:[python]
其中,setname表示要添加元素的集合,element表示要添加的元素内容。
需要注意的是,使用add()方法添加的元素,只能是数字、字符串、元组或者布尔类型(True和False)值,不能添加列表、字典、集合这类可变的数据,否则Python解释器会报TypeError错误。例如:
a = {1,2,3}
a.add((1,2))
print(a)
a.add([1,2])
print(a)12345复制代码类型:[python]
运行结果为:
{(1, 2), 1, 2, 3}
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\1.py", line 4, in <module>
a.add([1,2])
TypeError: unhashable type: 'list'12345复制代码类型:[python]
从set集合中删除元素
删除现有set集合中的指定元素,可以使用remove()方法,该方法的语法格式如下:
setname.remove(element)1复制代码类型:[java]
使用此方法删除集合中元素,需要注意的是,如果被删除元素本就不包含在集合中,则此方法会抛出KeyError错误,例如:
a = {1,2,3}
a.remove(1)
print(a)
a.remove(1)
print(a)12345复制代码类型:[python]
运行结果为:
{2, 3}
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\1.py", line 4, in <module>
a.remove(1)
KeyError: 112345复制代码类型:[python]
上面程序中,由于集合中的元素1已被删除,因此当再次尝试使用remove()方法删除时,会引发KeyError错误。
如果我们不想在删除失败时令解释器提示KeyError错误,还可以使用discard()方法,此方法和remove()方法的用法完全相同,唯一的区别就是,当删除集合中元素失败时,此方法不会抛出任何错误。
例如:
a = {1,2,3}
a.remove(1)
print(a)
a.discard(1)
print(a)12345复制代码类型:[python]
运行结果为:
{2, 3}
{2, 3}12复制代码类型:[python]
Python set集合做交集、并集、差集运算
集合最常做的操作就是进行交集、并集、差集以及对称差集运算,首先有必要给大家普及一下各个运算的含义。
图1中,有2个集合,分别为set1={1,2,3}和set2={3,4,5},它们既有相同的元素,也有不同的元素。以这两个集合为例,分别做不同运算的结果如表1所示。
运算操作 | Python运算符 | 含义 | 例子 |
交集 | & | 取两集合公共的元素 | >>> set1 & set2 |
并集 | | | 取两集合全部的元素 | >>> set1 | set2 |
差集 | - | 取一个集合中另一集合没有的元素 | >>> set1 - set2 |
对称差集 | ^ | 取集合 A 和 B 中不属于 A&B 的元素 | >>> set1 ^ set2 |
猜你喜欢
- 2024-10-10 SpringBoot整合Grpc实现跨语言RPC通讯
- 2024-10-10 RequestMapping属性详解 - SpringMVC高手进阶
- 2024-10-10 《Servlet》第22节:获取ServletContext上下文对象的四种方式
- 2024-10-10 阿里Java二面:说说Spring MVC执行流程及原理?这样聊能吊打面试官
- 2024-10-10 Springboot——用更优雅的方式发HTTP请求(RestTemplate详解)
- 2024-10-10 JavaServlet生命周期、HttpServletRequest和HttpServletResponse
- 2024-10-10 关于RESTful一些注意事项和自己整理的接口开发规范
- 2024-10-10 java版gRPC实战之二:服务发布和调用
- 2024-10-10 Servlet 点击计数器 点击计数在线
- 2024-10-10 Java开发架构篇:初识领域驱动设计DDD落地
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)