标签:python,集合
集合的特性
无序、不重复、可迭代
常用api
创建一个集合
需要显式地使用set()
方法来声明,如果使用字面量{}
来声明解析器会认为这是一个字典。add()
往集合中添加一个元素
demo = set()
demo.add(1)
>>>
{1}
移除一个元素
demo.remove(1)
demo
>>>
set()
使用remove移除一个不存在的元素会抛出异常,使用以下方法则不会
demo.discard(1)
# 移除一个不存在的元素时,不会抛出异常 意味着并不知晓是否移除成功
特殊API
求交集
s1 = {1, 3, 10, 2}
s2 = {2, 3}
s1 & s2
>>>
{2, 3}
求并集
s1 | s2
>>>
{1, 2, 3, 10}
求差集 父-子原则 s1中包含了s2
s1 - s2
>>>
{1, 10}
# 如果s2 - s1 返回空集合 因为s2并不包含s1的任何元素
s2 - s1
>>>
set()
对称差集 返回不在s1和s2中的元素
有点拗口,可以简单理解为交集的取反
s1 ^ s2
>>>
{1, 10}
其他场景下的运用
判断某个序列是否包含多个指定对象
如,判断列表d = ['s', 't', 'a', 'r', 't']
中是否包含字符a
和r
,最常见的方式是来两个if判断,其实,也可以使用集合来完成:
d = ['s', 't', 'a', 'r', 't']
s = {'t', 'r'}
set(d) >= s # 列表d有s的元素
>>>
True
由此及彼,我们有可以借助集合来判断字典的key中是否包含多个指定key。
d = {
'name': 'mk',
'age': 20,
'job': None
}
d.keys() >= {'name', 'age'} # 字典d的keys中包含了集合的元素
>>>
True
当然,我们也可以更换比较运算符,如==
或者<=
,基本上可以断定,运算符两边的对象是可以调换的,无非是A是否包含B的逻辑判断。
注意
使用set
声明集合时,传入的对象是一个可迭代对象,如:
set(['a', 'b'])
这个时候需要注意的是,如果要保存一个字符串到集合中,万不可使用:
set('字符串')
这样的方式,该方法会将字符串
遍历逐个添加到集合中,导致最后的结果是{'字', '符', '串'}
而非预期的{'字符串'}
,要达到预期,可使用:
set(['字符串'])
set().add('字符串')
来源:https://www.cnblogs.com/mooremok/p/16960541.html


猜你喜欢
- 这份数据集来源于Kaggle,数据集有12500只猫和12500只狗。在这里简单介绍下整体思路处理数据设计神经网络进行训练测试1. 数据处理
- 第一次碰到这个问题的时候,确实不知道该怎么办,后来请教了一个大神,加上自己的理解,才了解是什么意思,这个东西写python的会经常用到,而且
- goroutine 泄漏和避免泄漏的最佳实践Go的奇妙之处在于,我们可以使用goroutines和channel轻松地执行并发任务。如果在生
- 本文实例讲述了JS简单实现DIV相对于浏览器固定位置不变的方法。分享给大家供大家参考,具体如下:<!DOCTYPE HTML PUBL
- python脚本执行的3种方法:(找到自己能够使用的方法,能用的方法就是好方法)方法一:交互模式直接执行语句交互模式下直接编写执行 Pyth
- 本文为大家分享了JS组件Form表单验证神器BootstrapValidator,供大家参考,具体内容如下1、初级用法来看bootstrap
- 透视表是一种可以对数据动态排布并且分类汇总的表格格式。对于熟练使用 excel 的伙伴来说,一定很是亲切!pd.pivot_table()
- 方法一:mylist = [1,2,2,2,2,3,3,3,4,4,4,4]myset = set(mylist)for item in m
- 本文实例讲述了Python数据结构与算法之图的基本实现及迭代器。分享给大家供大家参考,具体如下:这篇文章参考自《复杂性思考》一书的第二章,并
- 本文实例讲述了django框架自定义用户表操作。分享给大家供大家参考,具体如下:django中已经给我生成默认的User表,其中的字段已经可
- JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了
- 毫无疑问,Google是当今世界上最成功的互联网公司之一,但是Google也曾推出过一些失败的实验品。还记得Google Accelerat
- 本文实例为大家分享了python使用KNN算法识别手写数字的具体代码,供大家参考,具体内容如下# -*- coding: utf-8 -*-
- 用的昨天刚接触到的库,在windows下通过paramiko来登录linux系统并执行了几个命令,基本算是初试成功,后面会接着学习的。代码:
- 今天学习下Go语言如何集成Gin框架编写Restful Web API的基本操作。Gin框架简化了Go原生语言构建Web应用程序的复杂度,在
- 概述做日志分析工作的经常需要跟成千上万的日志条目打交道,为了在庞大的数据量中找到特定模式的数据,常常需要编写很多复杂的正则表达式。例如枚举出
- PYTHON 字节码设计在本篇文章当中主要给大家介绍 cpython 虚拟机对于字节码的设计以及在调试过程当中一个比较重要的字段 co_ln
- 前言这节课很重要。。界面整洁美观与否就看布局了。。这里讲布局方法,至于设计的天赋与最终界面的美感那就看造化了。。本文主要讲述Qt Desig
- 在许多网页中,当鼠标移到一张图片上时,又弹出另一张图片,做这种广告条,要用到Macromedia Dr
- 使用jmail组件发送邮件:Function JMail(Send_From,Send_To,Send_Subject,Send_