python集合能干吗


Posted in Python onJuly 19, 2020

一、什么是集合:

集合(set)是一个无序的不重复元素序列。

重点:集合里边的元素是不可重复的并且集合内的元素还是无序的。

集合是一个可变容器

集合内的数据对象都是唯一的(不能重复)

集合是可迭代对象

集合相当于是只有键没有值得字典(键就是集合中的数据)

集合内的元素可以设置不可变类型frozenset()

集合pop()删除的时候类似队列先进先出 ,是类似。

也就是说,集合可以像元组一样,设置不可改变的类型;也可以默认像字典,列表一样,可以迭代改变;同时集合里的元素可以是列表,元组,字典。

二、为什么要使用集合

集合的特点决定了它简单,高效,速度快。

例如当用列表去重的时候:

list1=[1,2,3,4]
list2=[3,4,5,6]
list3=[]
for i in list1:
  if i in list2:
    list3.append(i)
print(list3)

利用集合去重:

my_list = [1, 2, 3, 4, 2, 3, 1, 2, 2]
# 转化为集合
my_set = set(my_list)
print(list(my_set))

# 结果

[1, 2, 3, 4]

三、集合可以进行如下基本操作:

1、 创建字典

可使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

>>> my_set = set(('apple',))
>>> my_set
{'apple'}

2、添加元素(add(),update())

# add 作为一个整体添加到集合中
my_set = set()
my_set.add("abc")
print(my_set)  
#update 是把要传入的元素拆分,做为个体传入到集合中
my_set = set()
my_set.update("abc")
print(my_set)

3、删除元素(remove(),pop(),discard())

#remove 如果集合种有,则直接删除;如果没有,程序报错 格式:集合名.remove(元素)
my_set = {11, 13, 15} 
my_set.remove(13)
print(my_set) my_set.remove(131)
print(my_set)  
#pop 随机删除集合中的元素 如果集合中没有元素则程序报错
my_set = {11, 13, 15}
my_set.pop()
print(my_set)  
#discard 如果集合中元素存在,直接删除; 如果元素不存在 不做任何操作  格式: 集合名.discard(元素)
my_set = {11, 13, 15} 
my_set.discard(13)
print(my_set) 
my_set.discard(131)
print(my_set)

4、交集( & )

set1 = {9, 2, 3, 4}
set2 = {3, 4, 5, 16}
new_set = set1 & set2
print(new_set)
# result {3, 4}

5、 并集( | )

set1 = {1, 2, 3, 4}
set2 = {3, 5, 5, 6}
new_set = set1 | set2
print(new_set)
# result {1, 2, 3, 4, 5, 6}

6、 差集(-)

项在前一个集合中,但不在后一个集合中。

set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
new_set = set1 - set2
print(new_set)
# result {1, 2}

7、对称差集( ^ )

即项在前一个集合或后一个集合中,但不会同时出现在二者中。即交集减去并集。

set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
new_set = set1 ^ set2
print(new_set)
# result {1,2,5,6}

8、子集判断

set1 = { 3, 4}
set2 = {3, 4, 5, 6}
# 判断set1是否是set2的子集
print(set1.issubset(set2))
# result True

9、父集判断

set1 = { 3, 4}
set2 = {3, 4, 5, 6}
# 判断set1是否是set2的父集
print(set1.issuperset(set2))
# result False

10、迭代和枚举

s={34,56,76,34,56,54,43,23,56}
for i in s:
  print(i) ##迭代输出其内容
for i,v in enumerate(s):
  print('index: %s,value: %s' %(i,v))
"""
result:
index: 0,value: 34
index: 1,value: 43
index: 2,value: 76
index: 3,value: 54
index: 4,value: 23
index: 5,value: 56
"""

可观察出,集合会自动过滤掉相同元素。

知识点扩展

创建集合

1.使用直接量创建集合

注意:使用直接量不能创建空集合

s = {1,2,3}

s = {"hello",3.14,True,(2019,02,17)}

2.使用构造函数创建集合 - set

s = set() #创建空集合

s = set(iterable) #使用可迭代对象创建一个集合

s = set("ABC") # s = {'A','B','C'}

s = set([1,0,3.14,"hello"]) # s = {1,0,3.14,'hello'}

... ...

到此这篇关于python集合能干吗的文章就介绍到这了,更多相关python集合的作用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中用Descriptor实现类级属性(Property)详解
Sep 18 Python
理解Python中的类与实例
Apr 27 Python
Python中函数的参数传递与可变长参数介绍
Jun 30 Python
Windows下搭建python开发环境详细步骤
Jul 20 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
Aug 18 Python
详解python中的数据类型和控制流
Aug 08 Python
python自动保存百度盘资源到百度盘中的实例代码
Aug 26 Python
Python 元组拆包示例(Tuple Unpacking)
Dec 24 Python
Tensorflow获取张量Tensor的具体维数实例
Jan 19 Python
python 获取域名到期时间的方法步骤
Feb 10 Python
解决Python import .pyd 可能遇到路径的问题
Mar 04 Python
解决Pytorch中关于model.eval的问题
May 22 Python
python如何建立全零数组
Jul 19 #Python
解决python中0x80072ee2错误的方法
Jul 19 #Python
python给视频添加背景音乐并改变音量的具体方法
Jul 19 #Python
python中加背景音乐如何操作
Jul 19 #Python
python实现最短路径的实例方法
Jul 19 #Python
python等待10秒执行下一命令的方法
Jul 19 #Python
python怎么删除缓存文件
Jul 19 #Python
You might like
PHP版 汉字转码的实现详解
2013/06/09 PHP
PHP二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
php自动更新版权信息显示的方法
2015/06/19 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
JS数学函数Exp使用说明
2012/08/09 Javascript
浅析JQuery UI Dialog的样式设置问题
2013/12/18 Javascript
js动态创建标签示例代码
2014/06/09 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
浅谈addEventListener和attachEvent的区别
2016/07/14 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
AngularJS中的Promise详细介绍及实例代码
2016/12/13 Javascript
10个最优秀的Node.js MVC框架
2017/08/24 Javascript
AngularJS动态添加数据并删除的实例
2018/02/27 Javascript
Java设计中的Builder模式的介绍
2018/03/22 Javascript
mint-ui在vue中的使用示例
2018/04/05 Javascript
微信小程序实现的日期午别医生排班表功能示例
2019/01/09 Javascript
深入了解JavaScript代码覆盖
2019/06/13 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
多个Vue项目部署到服务器的步骤记录
2020/10/22 Javascript
[48:27]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
python select.select模块通信全过程解析
2017/09/20 Python
Python3最长回文子串算法示例
2019/03/04 Python
Django REST framework 分页的实现代码
2019/06/19 Python
python numpy实现rolling滚动案例
2020/06/08 Python
HTML+CSS3模拟心的跳动实例代码
2017/09/05 HTML / CSS
详解canvas绘制网络字体几种方法
2019/08/27 HTML / CSS
HTML5 body设置全屏背景图片的示例代码
2020/12/08 HTML / CSS
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
远东集团网络工程师面试题
2014/10/20 面试题
销售辞职报告范文
2014/01/12 职场文书
五十岁生日宴会答谢词
2014/01/15 职场文书
清明节网上祭英烈寄语2015
2015/03/04 职场文书
广播体操比赛主持词
2015/06/29 职场文书
领导干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
Python如何使用logging为Flask增加logid
2021/03/30 Python
详解Go语言运用广度优先搜索走迷宫
2021/06/23 Python