python时间去掉t_Python的set集合详解

Python 还包含了一个数据类型 —— set (集合)。

集合是一个无序不重复元素的集。基本功能包括关系测试和消除重复元素。

集合对象还支持 union(联合),intersection(交),difference(差)和 sysmmetric difference(对称差集)等数学运算。

创建集合set

大括号或 set() 函数可以用来创建集合。 

set集合类需要的参数必须是迭代器类型的,如:序列、字典等,然后转换成无序不重复的元素集。由于集合是不重复的,所以可以对字符串、列表、元组进行去重操作。

1、创建空集合

>>> s=set()
>>> s
set()
>>> s1=set([]) #列表
>>> s1
set()
>>> s2=set(()) #元组
>>> s2
set()
>>> s3=set({}) #字典
>>> s3
set()

注意:想要创建空集合,你必须使用 set() 而不是 {}。后者用于创建空字典,我们在后面介绍的一种数据结构。

2、创建非空集合

即列表,元组,字典不在是空值,举两个例子

>>> s1=set([1,2,3,4])
>>> s1
{1, 2, 3, 4}>>> s3=set({'a':2,'b':3,'c':4})
>>> s3
{'c', 'a', 'b'}

注:字典转set集合,需要注意的是,只取了字典的key,相当于将字典中的dict.keys()列表转成set集合。

集合的操作

1、集合添加

集合的添加有两种方式,分别是add和update。但是它们在添加元素时是有区别的:

  • add()方法

把要传入的元素作为一个整体添加到集合中,如:

>>> s=set('one')
>>> s
{'e', 'o', 'n'}
>>> s.add('two')
>>> s
{'e', 'two', 'o', 'n'}
  • update()方法

是把要传入的元素拆分成单个字符,存于集合中,并去掉重复的字符。

可以一次添加多个值,如:

>>> s=set('one')
>>> s
{'e', 'o', 'n'}
>>> s.update('two')
>>> s
{'e', 'n', 't', 'w', 'o'}

2、集合删除

集合的删除操作使用的方法跟列表是一样的,使用的也是remove方法。如:

  • setVar.remove(element)

setVar :为一个set类型的变量

element :表示要查找并删除的元素

函数作用:

在集合setVar中查找element元素,如果存在则删除;如果没找到,则报错。

>>> s=set('one')
>>> s
{'e', 'o', 'n'}
>>> s.remove('e')
>>> s
{'n', 'o'}
  • setVar.discard(element)

setVar :为一个set类型的变量

element :表示要查找并删除的元素

函数作用:

在集合setVar中查找element元素,如果存在则删除;如果没找到,则什么也不做。

>>> sList
set([1, 2, 3, 4, 5])
>>> sList.discard(1)
>>> sList
set([2, 3, 4, 5])
  • s.pop()

s:为set类型的变量

函数作用:

删除并返回set类型的s中的一个不确定的元素,如果为空引发KeyError错误。

>>> sList
set([2, 3, 4, 5])
>>> sList.pop()
2
  • s.clear()

s:set类型的变量

函数作用:

清空s集合中的所有元素

>>> sList
set([3, 4, 5])
>>> sList.clear()
>>> sList
set([])

3、集合的遍历

集合的遍历跟序列的遍历方法完全一样。

>>> s=set('one')
>>> s
{'e', 'o', 'n'}
>>> for i in s:print(i)
... ...
e
o
n
>>>

另一种遍历方式:

>>> s=set('one')
>>> s
{'e', 'o', 'n'}
>>> for idex,i in enumerate(s):print (idex,i)
... ...
0 e
1 o
2 n
>>>

变量idex表示集合中元素i的索引。

4、集合其他方法

f8da429960366aae81742f533ade84f6.png

集合的一些操作符

既然是集合,那就会遵循集合的一些操作方法,如求交集、并集、差集等。

1、交集

Python中求集合的交集使用的符号是“&”,返回连个集合的共同元素的集合,即集合的交集。

>>> st1 = set('python')
>>> st1
set(['h', 'o', 'n', 'p', 't', 'y'])
>>> st2 = set('htc')
>>> st2
set(['h', 'c', 't'])
>>> st1 & st2
set(['h', 't'])

2、并集(合集)

Python中求集合的并集用的是符号“|”,返回的是两个集合所有的并去掉重复的元素的集合。

>>> st1
set(['h', 'o', 'n', 'p', 't', 'y'])
>>> st3 = set('two')
>>> st3
set(['o', 't', 'w'])
>>> st1 | st3
set(['p', 't', 'w', 'y', 'h', 'o', 'n'])

3、差集

Python中差集使用的符号是减号“-”。

>>> st1
set(['1', '3', '2', '5', '4', '7', '6'])
>>> st2 = set('4589')
>>> st2
set(['9', '8', '5', '4'])
>>> st1 - st2
set(['1', '3', '2', '7', '6'])

返回的结果是在集合st1中但不在集合st2中的元素的集合。

4、集合的不同

查看两个集合的不同之处,使用的difference函数,等价于差集。如:

s1.difference(s3)

这种不同指的是集合s3相对于集合s1,不同的地方,也就是所有在集合s1中,而不再集合s2中的的元素组成的新集合。

>>> s1
set([1, 2, 3, 4, 5])
>>> s2
set([1, 2, 3, 4])
>>> s1.difference(s2)
set([5])
>>> s3
set(['1', '8', '9', '5'])
>>> s1.difference(s3)
set([1, 2, 3, 4, 5]

集合的范围判断

集合可以使用大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、不等于(!=)来判断某个集合是否完全包含于另一个集合,也可以使用子父集判断函数。

定义三个集合s1,s2,s3:

>>> s1=set([1, 2, 3, 4, 5])
>>> s2=set([1, 2, 3, 4])
>>> s3=set(['1', '8', '9', '5'])

大于(>)或大于等于(>=)

>>> s1 > s2
True
>>> s1 > s3
False
>>> s1 >= s2
True

表示左边集合是否完全包含右边集合,如集合s1是否完全包含集合s2。

小于(<)或 小于等于(<=)

>>> s2 < s1
True
>>> s1 < s3
False
>>> s3 < s1
False

表示左边的集合是否完全包含于右边的集合,如集合s1是否完全包含于集合s2。

等于(==)、不等于(!=)

>>> s1 == s2
False
>>> s2 == s3
False
>>> s1 != s2
True

判断两个集合是否完全相同。

不可变集合frozenset

Python中还有一种不可改变的集合,那就是frozenset,不像set集合,可以增加删除集合中的元素,该集合中的内容是不可改变的,类似于字符串、元组。

>>> f = frozenset()
>>> f
frozenset([])
>>> f = frozenset('asdf')
>>> f
frozenset(['a', 's', 'd', 'f'])
>>> f = frozenset([1,2,3,4])
>>> f
frozenset([1, 2, 3, 4])
>>> f = frozenset((1,2,3,4))
>>> f
frozenset([1, 2, 3, 4])
>>> f = frozenset({1:2, 'a':2, 'c':3})
>>> f
frozenset(['a', 1, 'c'])

文源网络,仅供学习之用,如有侵权,联系删除。

我将优质的技术文章和经验总结都汇集在了我的公众号【Python圈子】里。

在学习Python的道路上肯定会遇见困难,别慌,我这里有一套学习资料,包含40+本电子书,600+个教学视频,涉及Python基础、爬虫、框架、数据分析、机器学习等,不怕你学不会!还有学习交流群,一起学习进步~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359448.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快乐学习 Ionic Framework+PhoneGap 手册1-3 {面板切换}

编程的快乐和乐趣&#xff0c;来自于能成功运行程序并运用到项目中,会在后面案例&#xff0c;实际运用到项目当中与数据更新一起说明 从面板切换开始&#xff0c;请看效果图和代码&#xff0c;这只是一个面板切换的效果 Index HTML Code <!DOCTYPE html> <html ng-ap…

去掉左边0_SLAM从0到1——11. 视觉里程计VO内容框架

「本文是之前学习VO 部分整理的思维导图&#xff0c;笔记写入之后均折叠了起来&#xff0c;正文中采用markdown格式展开&#xff0c;可看到笔记内容」放上来的目的其实是方便自己查阅笔记&#xff0c;同样给有需要的同学提供一点思路。整体上的结构分为5部分&#xff0c;包括常…

教程:如何实现Java OAuth 2.0以使用GitHub和Google登录

将Google和GitHub OAuth登录添加到Java应用程序的指南 我们添加到Takipi的最新功能之一是3rd party登录。 如果您像我一样懒惰&#xff0c;那么我想您也希望跳过填写表单和输入新密码的操作 。 只要有权限&#xff0c;许多人都希望使用第三方登录&#xff0c;只要他们要求的权…

柔性太阳能电池pdf_房车旅行如何做到电力无忧,那就选择一套合适的太阳能供电系统吧...

“旅行途中房车电力够不够用&#xff1f;”是众多车友在购买房车时会考虑的因素之一。而房车外部供电方式一般有三种&#xff1a;电网供电、发电机发电和太阳能发电&#xff0c;其中太阳能发电因其结构简单、体积小且轻、易安装、维护简单、寿命长不易损坏、一次性投资、循环利…

POJ 3617

题意&#xff1a;给定长度为N的字符串S&#xff0c;现要构造一个字符串T&#xff08;起初为空串&#xff09;。任意进行一下的一种操作&#xff1a; 1>从S的头部删除一个字符&#xff0c;加到T的尾部 2>从S的尾部删除一个字符&#xff0c;加到T的尾部 目的使T的字典序最小…

echarts的词云图表类型有哪些_数据可视化之常见12种图表类型分析

数据可视化有众多展现方式&#xff0c;不同的数据类型要选择适合的展现方法&#xff0c;今天友创云天就整理分析了几种常见的类型&#xff0c;给大家提供参考。1.饼图饼图是一个划分为几个扇形的圆形统计图表。每个扇形的弧长&#xff08;以及圆心角和面积&#xff09;大小&…

使用Spring Boot和注释支持配置Spring JMS应用程序

1.简介 在以前的文章中&#xff0c;我们学习了如何使用Spring JMS配置项目。 如果查看有关使用Spring JMS进行消息传递的文章介绍 &#xff0c;您会注意到它是使用XML配置的。 本文将利用Spring 4.1版本中引入的改进 &#xff0c;并仅使用Java config来配置JMS项目。 在这个示…

室内主题元素分析图_2020届室内设计专业优秀毕业设计作品展(五)

“环”食疗养生空间概念设计△建筑外立面▲LOGO前 言每当人们提及健康时&#xff0c;人们的反应往往是运动、睡眠和饮食。现代的青年上班族&#xff0c;又因为快节奏的生活&#xff0c;工作压力大&#xff0c;饮食的不规律&#xff0c;生活不良习性的增加&#xff0c;导致了各…

C++输入cin详解

C输入cin详解 输入原理&#xff1a; 程序的输入都建有一个缓冲区&#xff0c;即输入缓冲区。一次输入过程是这样的&#xff0c;当一次键盘输入结束时会将输入的数据存入输入缓冲区&#xff0c;而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的&#xf…

时间序列的截尾和拖尾_R语言:时间序列(一)

01 解决什么问题在社会活动中经常可见按照时间顺序记录下来的随机事件观察值&#xff0c;例如每年死亡人数序列&#xff0c;每年糖尿病发病人数序列&#xff0c;医院门诊每日诊治病例数序列。这类数据的特性是相邻时间点的观察值之间具有明显的相关性&#xff0c;这一特性不同于…

JVM崩溃时:如何调查最严重错误的根本原因

当应用程序崩溃时&#xff0c;您可以学到什么&#xff1f; 我认为&#xff0c;“后见之明是20 /”是最喜欢的短语之一托马斯罗梅尔 &#xff0c;工程ZeroTurnaround的副总裁。 好吧&#xff0c;我实际上不确定在他的短语中占什么位置&#xff0c;但是我已经听过他几次说了。 鉴…

常用个人密码管理软件

http://www.williamlong.info/archives/3100.html转载于:https://www.cnblogs.com/svennee/p/4099358.html

查看网口命令_20个常用Linux命令

今天总结几个非常常用的Linux命令,其中有几个在面试中很可能问相关命令的原理,比如后台运行命令。希望对大家有所帮助,最好自己去尝试在Linux操作系统中实践一下。 1、查看目录以及权限 在windows中,使用dir查看当前目录中文件。在Linux中使用ls(list)查看当前目录文件。 w…

中统计字符串长度的函数_SQL Server中的字符串分割函数

您是否知道从SQL Server 2016开始&#xff0c;系统就内置STRING_SPLIT函数&#xff0c;该函数用于将字符串分隔的变量拆分为一个可用列表。 对于经常需要分割字符串的技术人员&#xff0c;建议您查看此功能。 STRING_SPLIT是一个表值函数&#xff0c;它返回由定界符分隔的字符串…

JBoss BPM Suite快速指南–将外部数据模型导入BPM项目

您正在从事一个大型项目&#xff0c;在企业中开发规则&#xff0c;事件和流程以满足关键业务需求。 部分要求指出&#xff0c;某个业务部门将提供您的数据模型供您利用。 不会在JBoss BPM Suite数据建模器中设计此数据模型&#xff0c;但是在从业务中心仪表板处理规则&#x…

卸载 流程_一款适合于windows端的卸载神器 彻底清理残留软件

今天给大家介绍的是一款适合于Windows端的软件卸载神器---Uninstall&#xff0c;可以彻底清理残留软件。它的卸载流程是这样的&#xff0c;首先会使用软件本身的默认卸载程序进行卸载&#xff0c;卸载完成后再次扫描软件残留的一些残余文件及注册表之类的&#xff0c;可以完美的…

十三水算法php_基于PHP+Redis令牌桶限流

一 、场景描述在开发接口服务器的过程中&#xff0c;为了防止客户端对于接口的滥用&#xff0c;保护服务器的资源&#xff0c; 通常来说我们会对于服务器上的各种接口进行调用次数的限制。比如对于某个 用户&#xff0c;他在一个时间段&#xff08;interval&#xff09;内&…

Java REST JAX-RS 2.0 –如何处理日期,时间和时间戳记数据类型

无论是X-Form-Urlencoded还是JSON HTTP发布到REST资源端点&#xff0c;对于与日期或时间相关的数据都没有特定的“数据类型”。 大多数开发人员会将这些数据发布为“字符串”&#xff0c;或者只是将它们转换为Unix时间戳值&#xff08;例如1435061152&#xff09;。 但是&#…

html中给div设置的属性怎么样才能拿得到_HTML与CSS结合的三种方式:优先级比较...

所谓实践出真知&#xff0c;只有自己动手去做了&#xff0c;才能得到正确的结论。首先我们看看三种结合方式&#xff1a;通过link标签引入外部css文件通过style标签通过style属性很长一段时间我受这个一段话影响&#xff1a;在html文件中&#xff0c;代码的执行顺序是从外到内&…

Quartz作业调度框架及时间表达式的含义和语法

Quartz 是一个开源的作业调度框架&#xff0c;它完全由 Java 写成&#xff0c;并设计用于 J2SE 和 J2EE 应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。本系统结合通过 Spring 来集成 Quartz 。 Quartz 下载地址 &#x…