Python除了List、Tuple、Dict等常用数据类型外,还有一种数据类型叫做集合(set),集合的最大特点是:集合里边的元素是不可重复的并且集合内的元素还是无序的,所以一般情况下集合常用的两个场景是:1.去重(如:列表去重);2.关系测试(如:取交集、取并集、取差集等)

 1)集合包含一组无序的对象,可以使用set()函数来像下边的方式一样来创建集合

#!/usr/bin/env python
# -*-coding:UTF-8 -*-
#创建一个数值集合
set1 = set([1,2,3,4])
#创建一个字符集合  注意:从输出结果中我们会看到l只出现了一次
set2 = set("HelloWorld!")print('set1 %s' % set1)
print('set2 %s' % set2)
'''运行结果
set1 {1, 2, 3, 4}
set2 {'d', 'o', 'e', 'H', 'l', 'W', 'r', '!'}
'''

  2)去重,即可能在一些特殊的场景需要用到,实现去除掉列表中的重复元素

#!/usr/bin/env python
# -*-coding:UTF-8 -*-
#列表去重比较简单
list1 = [3,3,3,4,5,3]
set1 = set(list1)
print("list1去重后的set集合:",set1)#将如中后的集合在转化成一个新列表
new_list = [i for i in set1]
print("list1去重后的list列表:",new_list)
'''运行结果
list1去重后的set集合: {3, 4, 5}
list1去重后的list列表: [3, 4, 5]
'''

 3)关系测试,即一些集合的最基本操作,如集合取交集、取并集、取差集、判断一个集合是不是另一个集合的子集或者父集等。

#!/usr/bin/env python
# -*-coding:UTF-8 -*-
set1 = set([1,2,3,4,5])
set2 = set([3,4,5,6,7])#取交集
set3 = set1.intersection(set2)
# set3 = set1 & ste2  #取交集,与上边效果相同
print("set1和set2的交集为:",set3)#取并集
set4 = set1.union(set2)
#set4 = set1 | set2   #取并集,
print("set1和set2的交集为:",set4)#取差集    这个地方要稍稍注意一下,防止进坑
set5 = set1.difference(set2)
#set5 = set1 - set2  #取差集 
print("set1与set2的差集为:",set5)
set6 = set2.difference(set1)
print("set2与set1的差集为:",set6)#对称差集 -----即去掉两个集合的共同的部分
set7 = set1.symmetric_difference(set2)
#set7 = set1 ^ set2  #对称差集
print("去掉两个集合的共同的部分:",set7)#判断是否是set1是否是set2的子集
flag1 = set1.issubset(set2)
print("print(判断是否是set1是否是set2的子集):",flag1)#判断是否是set1是否是set2的父集
flag2 = set1.issuperset(set2)
print("判断是否是set1是否是set2的父集:",flag2)'''运行结果如下:
set1和set2的交集为: {3, 4, 5}
set1和set2的交集为: {1, 2, 3, 4, 5, 6, 7}
set1与set2的差集为: {1, 2}
set2与set1的差集为: {6, 7}
去掉两个集合的共同的部分: {1, 2, 6, 7}
print(判断是否是set1是否是set2的子集): False
判断是否是set1是否是set2的父集: False
'''

 4)集合的一些其它基本操作

#!/usr/bin/env python
# -*-coding:UTF-8 -*-
#输出集合中的元素
#注意集合与列表和元组不同,集合是无序的,所以无法通过数字进行索引获取某一个元素的值
set1 = set([1,2,3,4])
for i in set1:print (i)#向集合中添加一个元素
set1.add(5)
print("向集合中添加一个元素5后:",set1)#删除一个元素
set1.remove(1)
#set1.discard(1) #注意使用remove的时候必须删除集合中存在的元素,如何元素不存在则会出错,而使用discard则不会出现错误 print("从集合中删除元素1后:",set1)#计算集合的长度 l = len(set1) print("集合的长度为:",l)#判断某个元素是否在集合内 flag1 = 2 in set1 print("判断元素2是否在集合内:",flag1)#断某个元素是否不在集合内 flag2 = 3 not in set1 print("判断元素3是否不在集合内:",flag2)#对集合进行一次浅复制 set2 = set1.copy() print("对集合进行一次浅复制:",set2)'''运行结果如下: 1 2 3 4 向集合中添加一个元素5后: {1, 2, 3, 4, 5} 从集合中删除元素1后: {2, 3, 4, 5} 集合的长度为: 4 判断元素2是否在集合内: True 判断元素3是否不在集合内: False 对集合进行一次浅复制: {2, 3, 4, 5} '''

 以上是集合(set)的一些比较常用操作的示例,对于集合的一些其它操作,这里就不在一一举例说明了。

 

转载于:https://www.cnblogs.com/OMCloud/p/7123221.html

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

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

相关文章

php中的图像下载函数,PHP实现的下载远程图片自定义函数分享

/*** PHP下载远程图片到本地** param $url string 远程文件地址* param $filename string 保存后的文件名(为空时则为随机生成的文件名,否则为原文件名)* param $fileType array 允许的文件类型* param $dirName string 文件保存的路径(路径其余部分根据时间系统自动…

Linux 文件的压缩与解压

1. tar结尾压缩命令 [roottest ~]# tar -cvf grub.tar /boot/grub/ 查看压缩包文件 [roottest ~]# tar -vtf grub.tar 解压文件 #tar -xvf grub.tar # tar -xvf grub.tar -C 解压目录 2. gz结尾压缩命令 # tar -zcvf grub.tar.gz /boot/grub gz结尾解压命令 #tar -zxvf gr…

深度学习笔记-卷积神经网络CNN与循环神经网络RNN有什么区别?

转载 https://blog.csdn.net/weixin_35227692/article/details/79223536转载于:https://www.cnblogs.com/USTBlxq/p/10445268.html

参考框架 系统 基准_带有基准的前端框架的实际比较

参考框架 系统 基准by Jacek Schae由Jacek Schae 带有基准的前端框架的实际比较 (A Real-World Comparison of Front-End Frameworks with Benchmarks) UPDATE: There is a newer version of this article更新:本文有较新的版本 A Real-World Comparison of Front…

ppt复制切片器_零基础小白自学PPT快速入门到精通(上)

零基础小白如何自学PPT快速入门到精通呢?40个保姆级小技巧助力你高效掌握PPT基础操作!PPT在学习与工作中的应用越来越广泛:在学校时免不了要做毕业答辩、毕业论文,工作中时常要进行复盘总结、工作汇报、推广方案,有时甚…

网络安全初创公司SafeBreach获1500万美元A轮融资

今天,网络安全初创公司 SafeBreach 宣布完成1500 万美元 A 轮融资,新投资者德国电信、惠普公司、 Maverick Ventures 及现有投资者 Sequoia Capital 和 Shlomo Kramer 参投。公司计划利用本轮融资加大研发力度,扩大销售及营销团队&#xff0c…

php网站分区,PHP - Manual: 分区和分片 (官方文档)

分区和分片数据库群组是由于各种各样的原因建立的,他可以提升处理能力、容忍错误,并且提升大量服务器同时工作的的性能。群组有时会组合分区和共享功能,来将大量复杂的任务分拆成更加简单的任务,更加可控的单元。插件可以支持各种…

webBroser获取cookie

//取当前webBrowser登录后的Cookie值 [DllImport("wininet.dll", CharSet CharSet.Auto, SetLastError true)]static extern bool InternetGetCookieEx(string pchURL, string pchCookieName, StringBuilder pchCookieData, ref int pcchCookieData, int dwFlags…

了解Linux操作系统发展阶段

一、硬件与软件发展历史 计算机由硬件和软件组成结构 二、Linux的发展史 Linux 操作系统是Unix操作系统的一种克隆系统。它诞生于1991年的10月5日(只是第一次正式向外公布的时间)。以后借助于Internet网络,并经过全世界各地计算机爱好者的共同…

c gui qt 4编程第二版_面试官问Linux下如何编译C程序,如何回答?为你编译演示

文章来源:嵌入式大杂烩 作者:ZhengNLWindows下常用IDE来编译,Linux下直接使用gcc来编译,编译过程是Linux嵌入式编程的基础,也是嵌入式高频基础面试问题。一、命令行编译及各个细分编译过程hello.c示例代码:…

Python基础-----列表、元组、集合(2)

raw_input ##字符类型input##数值类型##格式化输出注释切片s[2:5]##切片从2开始到5,不包括5[kioskfoundation39 mnt]$ pythonPython 2.7.5 (default, Oct 11 2015, 17:47:16) [GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2Type "help", "copyri…

调用lambda_如何使用Lambda调用上下文动态设置超时

调用lambdaby Yan Cui崔燕 如何使用Lambda调用上下文动态设置超时 (How to set timeouts dynamically using Lambda invocation context) With API Gateway and Lambda, you’re forced to use short timeouts on the server-side:使用API​​ Gateway和Lambda,您不…

php+tp框架+API,php - tp框架能开发API接口吗

怪我咯2017-04-10 17:12:231楼TP的controller其实有很多种的HproseController,JsonRpcController,RestController,RpcController,YarController我拿RestController给你介绍一下RESTFul方法的操作方法定义主要区别在于,需要对请求类型和资源类型进行判断,…

OTL翻译(9) --常量的SQL语句

常量的SQL语句 一个没有绑定变量的SQL语句、SQL语句块或是存储过程就被称为常量的SQL语句。OTL通过一个静态的函数来执行这样的SQL语句。 例如: // static otl_cursor::direct_exec()otl_cursor::direct_exec(db, // connect object"create table test_tab(f1 …

[HNOI2016]网络 树链剖分,堆

[HNOI2016]网络 LG传送门 表示乱搞比正解难想。 整体二分很好想吧。 但是为了好写快乐,我们选择三个\(\log\)的乱搞。 先树剖,线段树套堆维护区间最大值。对于一次修改,如果是插入,就把树上除了这条链的地方加上这个重要度&#x…

python压缩文件为zip-python 压缩文件为zip后删除原文件

压缩.log 文件为zip后删除原文件 需要注意:本人作为小白,该脚本需要和.log在一起,后面有时间需要改正。 #!/usr/local/python/bin/python #-*-codingutf8 -*- import time import os import sys import zipfile N 7 #设置删除多少天前的文件…

css text-align-last设置末尾文本对齐方式

text-align-last:auto | start | end | left | right | center | justify auto: 无特殊对齐方式。 left: 内容左对齐。 center: 内容居中对齐。 right: 内容右对齐。 justify: 内容两端对齐。 start&#x…

后端开发除了编码还要做什么_每个开发人员都应掌握的基本技能(除了编码)

后端开发除了编码还要做什么Whether you are learning to code, looking for a new job, or just want to improve your skills as a developer, you need to master the essential tools of team collaboration. These are as important as knowing how to code.无论您是学习编…

Python中的defaultdict方法

字典(dictionary)是Python中一种常用的数据类型。不同于其他由数字索引的序列,字典是用"键"(key)来索引的。通常表示为dict(key: val, ...),有以下特征: 键可以是任何不可变&#xff…

git撤销commit 并保存之前的修改

撤销并保留修改 参数 –soft # 先进行commit &#xff0c;之后后悔啦$ git commit -am "对首篇报告研究员字段改为author_name"执行git log $ git logcommit 3d6788f577faba5e1d408e372031c81beee79749Author: yous <yous.com>Date: Thu Dec 14 10:08:36 2017 …