Python的集合set
(1)set本身的操作
s0 = {1, 2, 3}s1 = set()s2 = set('set')s3 = set([1, 2, 3])s4 = set((1, 2, 3))print(s0, s1, s2, s3, s4, sep='\n')
注意:set与dict一样使用{}来表示,但s={}创建的是空dict,不是创建空set。创建一个空set需要使用s=set()。
2.新增元素add和update
s = {1, 2, 'a', 5, 'b'}s.add(7)print(s)s.add('a')print(s)s.add('ab')print(s)
a = {1, 2, 3, 'a', 'b', 'c'}b = 'xyz'c = {'xyz', 'abc'}a.update(b)print(a)a.update(c)print(a)
可以看出:1)update是批量的添加多个元素或集合;2)添加结果是无序的,并非是添加到尾部。
3.删除元素remove/discard/pop/clear
s = {1, 2, 3, 'a', 'b', 'c'}s.remove(1)print(s)s.discard('a')print(s)s.pop()print(s)s.clear()print(s)
删除元素有remove,discard,pop,clear操作。可以看出,clear是清空集合,使得集合重置为空;
1.并集union
s1 = {1, 2, 3, 4, 5, 6, 7}s2 = {6, 7, 8, 9, 10, 11, 12}print(s1.union(s2))print(s2.union(s1))print(s1 | s2)
可以看出:A.union(B)==B.union(A)==A|B==B|A
2.交集intersection
s1 = {1, 2, 3, 4, 5, 6, 7}s2 = {6, 7, 8, 9, 10, 11, 12}print(s1.intersection(s2))print(s2.intersection(s1))print(s1 & s2)
可以看出:A.intersection(B)==B.intersection(A)==A&B==B&A
3.差集difference
s1 = {1, 2, 3, 4, 5, 6, 7}s2 = {6, 7, 8, 9, 10, 11, 12}print(s1.difference(s2))print(s2.difference(s1))print(s1 - s2)print(s2 - s1)
可以看出:1)A.difference(B) 不等于 B.difference(A),从上图中也可以看出来;2)difference可以使用“-”减号代替。
4.对称差集symmetric_difference
s1 = {1, 2, 3, 4, 5, 6, 7}s2 = {6, 7, 8, 9, 10, 11, 12}print(s1.symmetric_difference(s2))print(s2.symmetric_difference(s1))print(s1 ^ s2)print(s2 ^ s1)
s1 = {1, 2, 3, 4, 5, 6, 7}s2 = {6, 7, 8, 9, 10, 11, 12}s3 = {1, 2, 3}s4 = {1, 2, 3}print(s1.issubset(s2))print(s3.issubset(s1))print(s1.issuperset(s3))print(s4 <= s3)print(s1 > s3)
1.初始化时的元素必须是hashable的类型
s = {1, 2, [3, 4, 5]}
s = {1, 2, (3, 4, 5), 'abc'}print(s)
元组、字符串等hashable类型是可以的。
2.不支持索引index和切片slice操作
3.可以用于去除重复元素
s = {1, 1, 1, 2, 3, 4, 5, 2, 2, 3, 3, 4, 5, 5}s = list(set(s))print(s)
4.set的in或not in查询操作非常快
import timest = time.clock()N = 50000arr = [i for i in range(N)]A = [i for i in range(N) if i % 2 == 0]B = [i for i in range(N) if i % 2 == 1]count = 0for x in arr:if x in A: count += 1elif x in B: count -= 1print(count)print(time.clock() - st)
耗时近24秒。如果把A、B转换成set,进行同样的运算:
import timest = time.clock()N = 50000arr = [i for i in range(N)]A = set([i for i in range(N) if i % 2 == 0])B = set([i for i in range(N) if i % 2 == 1])count = 0for x in arr:if x in A: count += 1elif x in B: count -= 1print(count)print(time.clock() - st)
耗时0.03624秒,list是set耗时的660倍。因此,当需要对一个无重复元素数据集频繁进行查询操作时,使用set是一个很好的选择。
Python的集合set相关推荐
- python 获取集合里面的某一个元素
python 获取集合里面的某一个元素,想想呢集合是不支持所以,切片,相加,相乘操作的, 所以想获取集合里面的某一个元素需要转化下思路,比如把即可转成列表然后在利用索引获取 例如: list_a = ...
- Python 3 集合基础和概念!
Python 3 集合基础和概念! Python 3中,集合是无序的,所以不能进行切片和索引操作. 创建集合有两个方法:set()方法创建的集合是可变的,可被迭代的:frozenset()方法创建的集 ...
- python set集合内部实现_Python 实现集合Set的示例
Python的集合set原理 集合(set)是一个无序的不重复元素序列. 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } ...
- python文件下载器代码_GitHub - applechi/pythonCollection: python代码集合(文件下载器、pdf合并、极客时间专栏下载、掘金小册下载、新浪微博爬虫等)...
json2mysql 这次更新了将一个json文件中的数据导入到mysql的脚本. 是用nodejs写的. 对应的文件是tomysql.js 有兴趣的同志可以研究下. pythonCollection ...
- python renamer模块_【免费工具集】4种免费Maya Python脚本集合:重命名、检查UV、分配重叠模型、选边,尽在EL Tool Pack...
原标题:[免费工具集]4种免费Maya Python脚本集合:重命名.检查UV.分配重叠模型.选边,尽在EL Tool Pack DENG工作室Senior build TD的Erik Lehmann ...
- Python frozenset 集合 - Python零基础入门教程
目录 一.Python frozenset 集合语法 二.Python frozenset 集合使用 三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> P ...
- Python set集合 - Python零基础入门教程
目录 一.set 集合简介 二.set 集合常用函数 三.set 集合运算符 四.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 在 ...
- python中集合运算_入门 | 一文带你了解Python集合与基本的集合运算
原标题:入门 | 一文带你了解Python集合与基本的集合运算 选自DataCamp 作者:Michael Galarnyk 参与:Geek Ai.思源 一般我们熟悉 Python 中列表.元组及字典 ...
- python空集合_python空集合
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! - 不可变数据类型实现某个功能,需要将结果赋值给另外一个变量; 是否实现for循 ...
- python教程400集笔记,Python学习中的笔记--集合相关,python笔记--集合
Python学习中的笔记--集合相关,python笔记--集合 集合的基本操作 一.可修改的集合set 创建集合 var = set() var = {'a','b','c','d'} 成员检测 va ...
最新文章
- @ImportResource-SpringBoot使用xml配置Bean
- LeanCloud学习笔记(1)
- Erlang列表操作里面的变量绑定规则
- apache arrow mysql_新手搭建PHP环境必备知识:windows下PHP5+APACHE+MYSQ完整配置(个人总结)...
- 反射工具类,如斯优雅
- python中数组的维度_Python数组维度问题
- Django模板语言
- .NET Core前后端分离快速开发框架(Core.3.0+AntdVue)
- 直播 | “深度学习”到底是什么?这篇文章讲明白了
- 微信公号“架构师之路”学习笔记(五)-数据库扩展性架构设计(水平切分,秒级扩容,平滑迁移,在线表结构变更,一个大数据量多属性高并发的数据库设计等)
- 用计算机弹让我做你的眼睛,让我做你的眼睛 (改编版)歌词
- 毕设-基于SpringBoot宠物医院管理系统
- (素材源码)猫猫学IOS(十九)UI之QQ好友列表
- 国家公祭日(国家哀悼日)将网站改成悼念灰黑色的方法
- 升级鸿蒙手机内数据会删除吗,鸿蒙系统:手机升级不会删除任何文件,包括APP的登录状态都不会掉...
- Spring-初识Spring框架-IOC控制反转(DI依赖注入)
- 全栈设计师必须拥有的Mac软件推荐
- 计算机窗口的大小是什么单位,电脑软件窗口大小调整
- rails parameter permit
- 定时任务组件Quartz
热门文章
- get post请求区别_LoadRunner发送GET和POST请求
- 移动**21*设置无法接通_电话打得出去,但别人打你的电话提示用户无法接通,是怎么回事?...
- Nginx高效学习手册(建议收藏)
- 总结2020,起航2021,奔向腾讯,实现增长!
- 记一次使用 Lombok 翻车造成的事故!
- (Mybaitis)分页
- 数据结构与算法—递归算法(从阶乘、斐波那契到汉诺塔的递归图解)
- JS根据日期比较显示时分或者月日
- Java-Web JSP指令、javabean和EL表达式
- python类的动态方法是什么_如何在python中为类动态创建类方法