python之set
什么是set
set和list类似,拥有一系列元素,但是set和list不一样,set里面的元素是不允许重复的,而list里面可以包含相同的元素;set与list的另一个区别是,set里面的元素是没有顺序的
创建set的方式是使用set()
,并传入一个list,list的元素将会被转换成set的元素。
需要注意的是,上述打印的形式类似 list, 但它不是 list,仔细看还可以发现,打印的顺序和原始 list 的顺序有可能是不同的,因为set内部存储的元素是无序的。
另外,set不能包含重复的元素,我们传入重复的元素看看会发生什么
可以看到,在传入set()的list中,包含了重复的元素,但是打印的时候,相同的元素只保留了一个,重复的元素都被去掉了,这是set的一个重要特点
读取set元素
由于set里面的元素是没有顺序的,因此不能像list那样通过索引来访问。访问set中的某个元素实际上就是判断一个元素是否在set中,这个时候我们可以使用in来判断某个元素是否在set中。
比如,存储了班里同学名字的set
请问'alice' ,'bob','bobby'是班里面的同学吗?
注意因为set元素是区分大小写的,必须大小写完全匹配,才能判断该元素在set里面
添加set元素
我们通过set()传入list的方法创建了set,如果set在使用过程中需要往里面添加元素,这个时候应该怎么添加呢?
set提供了add()方法,我们可以使用add()方法,往set里面添加元素。
比如,班里面来了新的同学,名字叫Gina
names = ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
name_set = set(names)
name_set.add('Gina')
print(name_set)
这样'Gina'已经添加到name_set里面去了。对于set,如果添加一个已经存在的元素,不会报错,也不会改变什么
names = ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
name_set = set(names)
name_set.add('Alice')
print(name_set)
可有些时候需要批量往set里面添加元素,如果一个一个add是比较麻烦的,有没有批量往set里面添加元素的方法呢?
set提供了update()方法,可以一次性给set添加多个元素。
比如,新来了一批同学,名字分别是['Hally', 'Isen', 'Jenny', 'Karl'],则可以使用update()方法,批量往set中添加
names = ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
new_names = ['Hally', 'Isen', 'Jenny', 'Karl']
name_set = set(names)
name_set.update(new_names)
print(name_set)
删除set元素
和list、dict一样,有时候我们也需要考虑删除set的元素
set提供了remove()方法允许我们删除set中的元素
name_set = set(['Jenny', 'Ellena', 'Alice', 'Candy', 'David', 'Hally', 'Bob', 'Isen', 'Karl'])
name_set.remove('Jenny')
print(name_set)
需要注意的是,如果remove的元素不在set里面的话,那么将会引发错误。
因此,使用remove()方法,我们需要格外小心,需要提前判断要remove()的元素是否在set里面,确保存在后,再进行remove。
操作set的其他方法
不会报错的删除方法discard()
除了使用remove()方法删除元素以外,还可以使用discard()方法删除元素,并且,和remove()不同的是,当元素不存在时,使用discard()并不会引发错误,所以使用discard()是更加高效的一个方法。
name_set = set(['Jenny', 'Ellena', 'Alice', 'Candy', 'David', 'Hally', 'Bob', 'Isen', 'Karl'])
name_set.discard('Jenny')
print(name_set)
name_set.discard('Jenny')
print(name_set)
清除所有元素的方法clear()
dict一样,set也提供了clear()方法,可以快速清除set中的所有元素。
name_set = set(['Jenny', 'Ellena', 'Alice', 'Candy', 'David', 'Hally', 'Bob', 'Isen', 'Karl'])
print(name_set)
name_set.clear()
print(name_set)
集合的子集和超集
set提供方法判断两个set之间的关系,比如两个集合set,判断其中一个set是否为另外一个set的子集或者超集
s1 = set([1, 2, 3, 4, 5])
s2 = set([1, 2, 3, 4, 5, 6, 7, 8, 9])
# 判断s1是否为s2的子集
s1.issubset(s2) # ==> True
# 判断s2是否为s1的超集
s2.issuperset(s1) # ==> True
判断集合是否重合
有时候需要判断两个集合是否有重合的地方,如果使用传统的方法,需要使用for循环一个一个的去判断,非常麻烦,set提供isdisjoint()
方法,可以快速判断两个集合是否有重合,如果有重合,返回False,否则返回True
s1 = set([1, 2, 3, 4, 5])
s2 = set([1, 2, 3, 4, 5, 6, 7, 8, 9])
s1.isdisjoint(s2) # ==> False,因为有重复元素1、2、3、4、5
python之set相关推荐
- Github配置(git+vscode+python+jupyter)
①下载git 打开 git bash 工具的用户名和密码存储 $ git config --global user.name "Your Name" $ git config -- ...
- 【实验楼】python简明教程
①终端输入python进入 欣赏完自己的杰作后,按 Ctrl + D 输入一个 EOF 字符来退出解释器,你也可以键入 exit() 来退出解释器. ②vim键盘快捷功能分布 ③这里需要注意如果程序中 ...
- 【Kaggle Learn】Python 5-8
五. Booleans and Conditionals Using booleans for branching logic x = True print(x) print(type(x))''' ...
- 【Kaggle Learn】Python 1-4
[Kaggle Learn]Python https://www.kaggle.com/learn/python 一. Hello, Python A quick introduction to Py ...
- 使用python愉快地做高数线代题目~
今天接触到了python,发现真是极易上手啊!对比c语言是什么鬼东西= = 诶,等下,看完教学文章发现TA在下面写了这句话 如果做了前面的内容你可能已被吸引了,觉得c语言真的是废材! 不...不是的. ...
- python 位运算与等号_Python 运算符
和大多数语言一样,Python也有很多运算符,并且运算符跟其他语言的运算符大同小异接下来一一介绍: 算术运算符: 运算符描述实例 +加 - 两个对象相加a+b的输出结果是30 -减 - 得到复数或者一 ...
- python减小内存占用_如何将Python内存占用缩小20倍?
当程序执行过程中RAM中有大量对象处于活动状态时,可能会出现内存问题,特别是在对可用内存总量有限制的情况下. 下面概述了一些减小对象大小的方法,这些方法可以显著减少纯Python程序所需的RAM数量. ...
- python中排序英文单词怎么写_Python实现对文件进行单词划分并去重排序操作示例...
本文实例讲述了Python实现对文件进行单词划分并去重排序操作.,具体如下: 文件名:test1.txt 文件内容: But soft what light through yonder window ...
- python程序如何执行死刑图片_如何判断对象已死
已死的对象就是不可能被任何途径使用的对象,有以下几种方法判断一个对象是否已经死了: 引用计数 给对象添加一个引用计数器,每当有一个地方引用他,计算器就加 1:当引用失效时,计数器减 1:任何时刻计数器 ...
- Python gRPC 安装
1. 安装依赖库 sudo pip3 install grpcio sudo pip3 install protobuf sudo pip3 install grpcio_tools 2. 生成对应文 ...
最新文章
- python xlrd读取excel所有数据_python读取excel进行遍历/xlrd模块操作
- html恢复按钮按下前的状态,如何通过点击按钮暂停和恢复html页面的执行
- 算法题:实现一个IP白名单过滤器
- 由熊猫烧香引发的思考
- 区块链基础知识系列 第三课 区块链中的默克尔树
- Oracle八大性能视图之v$sort_usage_temp
- 开源文件服务器file-service介绍
- 手型向下 点击一下 福昕_PPT多张缩略图点击放大展示
- 单调队列优化的背包问题
- LeetCode 1481. 不同整数的最少数目(计数+排序+贪心)
- webservice 原理
- Linux常用指令2
- 全局 快捷键_表格快捷键
- 最新微信养号、使用、解封必看的注意事项
- Java常见的加密解密
- 表单-微信小程序前端制作切片演示
- Python2.7字符编码详解
- pandas读取txt文件第一行列名困扰我许久的'点'
- python字典的遍历方式:向列表一样通过索引遍历字典的值
- 从零开始搞起 Disney BRDF源码编译(含踩坑经历)