09、集合set
集合(set)
集合是一个无序、可变、不允许数据重复的容器
s = {11,22,33,'ccc'}
- 无序,无法通过索引取值
- 可变,可以添加和删除元素
s = {11,22,33,44}
s.add(999)
print(s) #{33, 999, 11, 44, 22}
- 不允许数据重复
s = {11,22,33,44,55,33,44}
print(s) #{33, 11, 44, 22, 55}
一般什么时候用集合呢?就是想要维护一大堆的不重复的数据的时候。
- 定义空集合时,只能使用set(),不能用{}
独有功能
添加元素
data = {'小明','晓虹','小白'}
data.add('小青')
print(data) #{'小青', '小明', '晓虹', '小白'}
删除元素
data = {'小明','晓虹','小白'}
data.discard('小白')
print(data) #{'小明', '晓虹'}
交集
- 两个集合之间,找相同的元素
s1 = {'小明','晓虹','小白'}
s2 = {'晓晓','小白','大白痴'} s3 = s1 & s2
s4 = s1.intersection(s2)
print(s3,s4) #{'小白'}
并集
- 两个集合,合并在一起,重复的元素仅留一个
s1 = {'小明','晓虹','小白'}
s2 = {'晓晓','小白','大白痴'}
s3 = s1 | s2
s4 = s1.union(s2)
print(s3,s4) #{'晓虹', '晓晓', '大白痴', '小明', '小白'}
差集
s1 = {'小明','晓虹','小白'}
s2 = {'晓晓','小白','大白痴'}
s3 = s1 - s2
s4 = s1.difference(s2)
print(s3,s4) #{'小明', '晓虹'}
#两个集合,s1中有的且s2中没有的值 s3 = s2 - s1
s4 = s2.difference(s1)
print(s3,s4) #{'晓晓', '大白痴'}
#两个集合,s2中有的且s1中没有的值
公共功能
减,计算差集
s1 = {'小明','晓虹','小白'}
s2 = {'晓晓','小白','大白痴'}
s3 = s1 - s2
print(s3) #{'小明', '晓虹'}
&,计算交集
s1 = {'小明','晓虹','小白'}
s2 = {'晓晓','小白','大白痴'} s3 = s1 & s2
print(s3) #{'小白'}
|,计算并集
s1 = {'小明','晓虹','小白'}
s2 = {'晓晓','小白','大白痴'} s3 = s1 | s2
print(s3) #{'晓虹', '晓晓', '大白痴', '小明', '小白'}
长度
s = {'小明','晓虹','小白'}
data = len(s)
print(data) #3
for循环
s = {'小明','晓虹','小白'}
for item in s:
print(item)
转换
- int/list/tuple/dict都可以通过set()转换为集合
s1 = '大丈夫'
s2 = set(s1)
print(s2) #{'夫', '丈', '大'} s1 = {11,22,33,44,22,11}
s2 = set(s1)
print(s2) #{33, 11, 44, 22} s1 = (11,22,33,44,22,11,)
s2 = set(s1)
print(s2) #{33, 11, 44, 22}
元素必须可哈希
集合的元素只能是int,bool,str,tuple,而list,set是不可哈希的
- 转换成功
s1 = [11,22,33,44,11,3,99,22]
s2 = set(s1)
print(s2) #{33, 3, 99, 11, 44, 22}
- 转换失败
s1 = [11,22,['阿斯顿','大扫荡'],33]
s2 = set(s1)
print(s2)
集合查找速度特别
- 低效率
list = ['阿斯顿','打底衫','小明']
if '小明' in list:
print('在')
else:
print('不在') tuple = ('阿斯顿', '打底衫', '小明',)
if '小明' in tuple:
print('在')
else:
print('不在')
- 高效率
set = {'阿斯顿','打底衫','小明'}
if '小明' in set:
print('在')
else:
print('不在')
09、集合set的更多相关文章
- Windows7WithSP1/TeamFoundationServer2012update4/SQLServer2012
[Info @09:03:33.737] ====================================================================[Info @ ...
- 《2013传智播客视频》-wmv,avi,mp4.目录
\!--14俄罗斯方块\视频\.复习.avi; \!--14俄罗斯方块\视频\ 复习.avi; \!--14俄罗斯方块\视频\ 形状旋转.avi; \!--14俄罗斯方块\视频\ 判断形状能否变形.a ...
- js中的正则表达式【常用】
正则表达式是一种用于处理字符串匹配的强大工具,正则的核心在于匹配语法. 以下是常用的匹配规则 . 除了换行符之外的任意一个字符 \ 转义符,取消后面一个字符的含义,使其成为一个普通字符 [] 括号里的 ...
- Java入门笔记 00-前言&目录
前言:这本笔记记录的是Java基础部分的学习内容,大部分内容总结性的,包括: ---01 Java基础语法 ---02 数组 ---03 面向对象 ---04 异常处理 ---05 多线程 ---06 ...
- Java 集合系列 09 HashMap详细介绍(源码解析)和使用示例
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- Day_12【集合】扩展案例3_产生10个长度为10,不能重复,由数字0-9,小写字母和大写字母组成的字符串
分析以下需求,并用代码实现 1.产生10个1-20之间的随机数要求随机数不能重复 2.产生10个长度为10的不能重复的字符串(里面只能出现大写字母.小写字母.0-9的数字),并遍历打印输出 代码 pa ...
- Day_11【集合】扩展案例4_删除长度大于5的字符串,删除元素包含0-9数字的字符串
分析以下需求,并用代码实现 1.定义ArrayList集合,存入多个字符串 如:"ab1" "123ad" "bca" "dadf ...
- Java多线程系列--“JUC集合”09之 LinkedBlockingDeque
概要 本章介绍JUC包中的LinkedBlockingDeque.内容包括:LinkedBlockingDeque介绍LinkedBlockingDeque原理和数据结构LinkedBlockingD ...
- Java 集合系列09之 Map架构
概要 前面,我们已经系统的对List进行了学习.接下来,我们先学习Map,然后再学习Set:因为Set的实现类都是基于Map来实现的(如,HashSet是通过HashMap实现的,TreeSet是通过 ...
- Java基础知识强化之集合框架笔记09:Collection集合迭代器使用的问题探讨
1.Collection集合迭代器使用的问题探讨: (1)问题1:能用while循环写这个程序,我能不能用for循环呢? 可以使用for循环替代. (2)问题2:不要 ...
随机推荐
- 利用FFmpeg 将 rtsp 获取H264裸流并保存到文件中
既然已经可以通过 RTSP 获取h264 裸流了.那么通过 FFmpeg 将其保存到文件中怎么做呢? 一.首先RTSP获取 h264 裸流 我们上面两篇文章主要讲的是通过 rtsp://Your ip ...
- Gym 101480F Frightful Formula(待定系数)题解
#include<cmath> #include<set> #include<map> #include<queue> #include<cstd ...
- Angular 2 for 2017 web full stack development
1 1 1 Angular 2 for 2017 web full stack development 1 1 https://angular2.xgqfrms.xyz/ https://ng2-he ...
- MongoDB Manually config
MongoDB Manually config macOS 10.15.x path error exception in initAndListen: NonExistentPath: Data d ...
- ES Next & Arrow function & Promise & Iterator & Generator yield & Async Await
ES Next & Arrow function & Promise & Iterator & Generator yield & Async Await co ...
- Flutter & UI system & GUI & API & SDK
Flutter & UI system & GUI & API & SDK https://book.flutterchina.club/chapter14/flutt ...
- HTML5 stream video player
HTML5 stream video player Aliplayer https://player.alicdn.com/aliplayer/index.html https://help.aliy ...
- Mac Benchmarks
Mac Benchmarks https://browser.geekbench.com/mac-benchmarks https://www.geekbench.com/ https://www.f ...
- 软件工程中的CI&CD
wiki 在软件工程中,CI/CD或CICD通常是指持续集成以及持续交付或持续部署的组合实践 持续集成 在软件工程中,持续集成(CI)是每天将所有开发人员的工作副本合并到共享主线中的一种做法.[1] ...
- 11月16日NGK公链第13期官方快讯!