10_set集合
一、集合类型
集合是一组无序排列的可哈希的值(可哈希的值->不可变),集合成员可以做字典中的键。但集合本身是不可哈希的。
集合是无序没有索引,也没有像字典的key,所以集合不能更改元素。只能增删查(print、for循环)
集合的作用:
- 去重复元素
- 关系测试:交集、并集、差集、反交集、超集
二、集合的操作
1.集合的创建
#set 的创建
set1 = set('abcde') #def __init__(self, seq=()): 接受一个可迭代对象
set2 = {1,2,7,3,8,4,5,6} #直接赋值
print(set1)
print(set2)
2.去重
#利用set去重
li = [2,4,1,3,4,5,6,7,3,3]
set1 = set(li)
li = list(set1) print(li)
3.集合的增
3.1添加一个元素方法
#添加一个元素使用set.add()
set1 = {1,2,7,3,8,4,5,6}
set1.add('a') #Add an element to a set.
print(set1) #{1, 2, 3, 4, 5, 6, 7, 8, 'a'}
3.2迭代添加元素.接受一个可迭代对象,字符串、元组、列表、字典
#迭代添加
s1 = '中国'
set1 = {1,2,7,3,8,4,5,6}
set1.update(s1) #接受一个可迭代对象。把每个元素拆开,添加到set中
print(set1)
4.集合的删
4.1删除一个元素从set中
#删除一个元素从set中
set1 = {1,2,7,3,8,4,5,6,'a'}
set1.remove('a') #Remove an element from a set
print(set1)
4.2随机删除元素
#随机删,并返回被删除元素
set1 = {1,2,7,3,8,4,5,6,'a'}
set2 = set1.pop() #Remove and return an arbitrary set element. print(set2)
print(set1)
5.集合的其他操作
#1.print打印
set1 = {1,2,7,3,8,4,5,6,'a'}
print(set1) #2.for循环
for i in set1:
print(i) #3.in not in
print('a' in set1) #4.len()获取长度
print('集合长度:%d'%(len(set1)))
三、关系测试
交集
交集使用 & 或 intersection()
set1 = {1,2,3,4,5,6,7}
set2 = {3,4,5,6,7,8,9}
set3 = set1 & set2
set3 = set1.intersection(set2)
print(set3) #{3, 4, 5, 6, 7}
并集
并集: | 或者 union
set1 = {1,2,3,4,5,6,7}
set2 = {3,4,5,6,7,8,9}
set3 = set1 | set2
set3 = set1.union(set2)
print(set3) #{1, 2, 3, 4, 5, 6, 7, 8, 9}
差集
差集:两者各自特有的部分。使用 - 或者 difference()
#差集 : 两者做差,求各自特有的部分;该集合中的元素,只属于某一个集合,不属于另外那个集合
set1 = {1,2,3,4,5,6,7}
set2 = {3,4,5,6,7,8,9} #两种方式 - 或者 difference
set3 = set1 - set2 #两者做差,求各自特有的部分
set4 = set2 - set1 #两者做差,求各自特有的部分
set3 = set1.difference(set2)
set4 = set2.difference(set1) print(set3)#{1, 2} #set1特有的部分
print(set4)#{8, 9} #set2 特有的部分
反交集
反交集:^ 或者 symmetric_difference();该集合元素只能属于set1或者set2,不能同时set1又属于set2两个集合。->抛去两个集合相交的部分,把两者剩余的组成一个新集合。
#反交集:抛去他俩相同的部分,再组成一个新集合
set1 = {1,2,3,4,5,6,7}
set2 = {3,4,5,6,7,8,9} set3 = set1 ^ set2
set3 = set1.symmetric_difference(set2) print(set3) #{1, 2, 8, 9} 1,2是set1特有,8,9是set2特有
子集与超集
#子集与超集 : 检测某个集合是否是其他集合的超集或子集
#成立条件:set2必须得包含set1,并且含有set1没有的元素。set1不含有set2中的元素
set1 = {1,2,3,4,5,6,7}
set2 = {3,4,5,6,7,8,9}
set3 = {4,3} print(set2.issuperset(set1)) #False >=
print(set1.issuperset(set2)) #False
print(set2.issuperset(set3)) #True
print(set3.issubset(set2)) #True <= set3是set2的子集
10_set集合的更多相关文章
- java基础集合经典训练题
第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...
- .Net多线程编程—并发集合
并发集合 1 为什么使用并发集合? 原因主要有以下几点: System.Collections和System.Collections.Generic名称空间中所提供的经典列表.集合和数组都不是线程安全 ...
- 一起学 Java(三) 集合框架、数据结构、泛型
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
- 编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议75~78)
建议75:集合中的元素必须做到compareTo和equals同步 实现了Comparable接口的元素就可以排序,compareTo方法是Comparable接口要求必须实现的,它与equals方法 ...
- java基础_集合List与Set接口
List接口继承了Collection的方法 当然也有自己特有的方法向指定位置添加元素 add(索引,添加的元素); 移除指定索引的元素 remove(索引) 修改指定索引的元素 set ...
- Java基础Collection集合
1.Collection是所有集合的父类,在JDK1.5之后又加入了Iterable超级类(可以不用了解) 2.学习集合从Collection开始,所有集合都继承了他的方法 集合结构如图:
- 轻量级“集合”迭代器-Generator
Generator是PHP 5.5加入的新语言特性.但是,它似乎并没有被很多PHP开发者广泛采用.因此,在我们了解PHP 7对Generator的改进之前,我们先通过一个简单却显而易见的例子来了解下G ...
- Asp.net MVC 传递数据 从前台到后台,包括单个对象,多个对象,集合
今天为大家分享下 Asp.net MVC 将数据从前台传递到后台的几种方式. 环境:VS2013,MVC5.0框架 1.基本数据类型 我们常见有传递 int, string, bool, double ...
- 这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)
在前2篇文章这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧 和这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,大伙热情高涨.再次拿出自己的私货,在.NET平台 ...
随机推荐
- Javascrip随笔1
isNaN:指示某个值不是数字 文本字符串中使用反斜杠对代码行进行换行; 在计算机程序中,经常会声明无值的变量.未使用值来声明的变量,其值实际上是 undefined.在执行过以下语句后,变量 car ...
- [数据分析工具] Pandas 功能介绍(一)
如果你在使用 Pandas(Python Data Analysis Library) 的话,下面介绍的对你一定会有帮助的. 首先我们先介绍一些简单的概念 DataFrame:行列数据,类似 Exce ...
- [国嵌攻略][157][SPI总线介绍]
SPI总线架构 SPI(serial peripheral interface)串行外设接口,是一种高速,全双工,同步的通信总线.采用主从模式(master slave)架构,支持多个slave,一般 ...
- C++ 默认参数(转载)
函数的默认参数值,即在定义参数的时候同时给它一个初始值.在调用函数的时候,我们可以省略含有默认值的参数.也就是说,如果用户指定了参数值,则使用用户指定的值,否则使用默认参数的值. void Func( ...
- 番外篇--Moddule Zero安装
Moddule Zero 安装 1.2.1 从模板创建 使用ABP和module-zero开始一个新项目最简单的方式是使用启动模板.详细了解请参考启动模板文档. 1.2.2 手动安装 如果你有一个预先 ...
- Handler processing failed; nested exception is java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config解决
出现这个问题往往伴随 HTTP-500错误 报错信息: HTTP Status - Handler processing failed; nested exception is java.lang. ...
- Redis能干啥?细看11种Web应用场景
下面列出11种Web应用场景,在这些场景下可以充分的利用Redis的特性,大大提高效率. 1.在主页中显示最新的项目列表. Redis使用的是常驻内存的缓存,速度非常快.LPUSH用来插入一个内容ID ...
- (实例篇)LNMP 1.4一键安装包,安装教程
http://mp.weixin.qq.com/s/l6ijKBwD6tt8jkZytWEIsw https://lnmp.org/download.html 2017-09-11 学习与分享 PHP ...
- dede 提交表单 发送邮件
第一步:要到dede后台设置好邮箱的资料,并且确定所用的邮箱开启了smtp 第二步:找到/plus/diy.php在 [cce]$query = "INSERT INTO `{$diy-&g ...
- twitter的ID生成器的snowFlake算法的自造版
snowFlake算法在生成ID时特别高效,可参考:https://segmentfault.com/a/1190000011282426 SnowFlake算法生成id的结果是一个64bit大小的整 ...