成员查询在 list 是线性级的,而在 set 是常数级

成员的查询,list 和 set 都并未提供相关成员函数予以支持,而是使用 in+条件判断:

In [1]: from random import randrangeIn [2]: L = [randrange(10000) for _ in range(1000)]In [3]: 42 in L
Out[3]: TrueIn [4]: S = set(L)In [5]: 42 in S
Out[5]: True

set 操作的数学含义

s | t:并集
s & t:交集
s - t:差集
s ^ t:对称差集,等价于 (s|t)-(s&t)

set 与 frozenset

set 与 frozenset 的关系,如同 list 与 tuple 的关系,即 set 和 list 是可变的,frozenset 与 tuple 是不可变的。本质上是二者成员函数的支持不同,也即 frozenset 和 tuple 不支持更易型的操作。

运算符重载

  • s.issubset(t):s <= t
  • s.issuperset(t):s >= t
  • s.union(t):s|t
  • s.intersection(t):s&t
  • s.difference(t):s-t
  • s.symmetric_difference(t):s^t

注意,s.union(t), s.intersection(t), s.difference(t), s.symmetric_difference(t) 都是非更易型操作,也即都不对 s、t 的值进行修改,将操作后的结果作为返回值进行返回。

  • s.update(t):s |= t
  • s.intersection_update(t):s &= t
  • s.difference_update(t):s -= t
  • s.symmetric_difference_update(t):s ^= t

s.union(t) 与 s | t 的区别

s.union(t) t 的类型可以为 dict(将字典的全部 keys 加入集合中,因为字典的 key 也是不允许把重复的),s | t t 的类型不可以为 dict。

对 s.update(t)、s |= t 也是同样的要求;

Python 进阶——重访 set相关推荐

  1. Python 进阶——重访 list (二)

    Python 进阶--重访 list 1. list 如果以切片的形式访问,不会提示 index out of range >> x = [1, 2, 3] >> x[4] I ...

  2. Python 进阶 —— 重访 tuple

    # tuple + tuple >> (1, ) + (2, 3) (1, 2, 3)>> x = x.reshape((1, ) + x.shape) # (150, 150 ...

  3. Python 进阶——重访 list

    (1)如果 list 的元素各不重复,如从 set 而来, 可建立 value 与 index 的一一映射(list 中元素存在重复时,l.index[val] 返回的是第一个符合的索引): l[i] ...

  4. Python进阶之递归函数的用法及其示例

    作者 | 程序员adny 责编 | 徐威龙 封图| CSDN│下载于视觉中国 出品 |  AI科技大本营(ID:rgznai100) 本篇文章主要介绍了Python进阶之递归函数的用法及其示例,现在分 ...

  5. Python自学路线图之Python进阶

    Python自学路线图的第二个阶段是Python进阶学习,自学完后需要掌握的Python技能: 1.自学Linux操作系统,熟练使用Linux操作系统: 自学网络编程,掌握网络编程相关技术, 能够实现 ...

  6. 如果只推荐一本 Python 进阶的书,我要 Pick 它!

    作者 | 豌豆花下猫 今年二月初,我偶然看到了一条推特: <流畅的Python>一书的作者发布了一条激动人心的消息:他正在写作第二版! 如果要票选最佳的 Python 进阶类书目,这本书肯 ...

  7. 106页的《Python进阶》中文版(附下载)!

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送 推荐一本对Python感兴趣的书籍<Python进阶>,是<Inter ...

  8. Python进阶6——序列操作

    1.序列的拼接和复制 Python中使用+对序列进行拼接,使用*对序列进行复制 s=str(1234) l=list(range(2,13)) print(s,l) print('---------- ...

  9. Python 进阶之路 (九) 再立Flag, 社区最全的itertools深度解析(上)

    前言 大家好,今天想和大家分享一下我的itertools学习体验及心得,itertools是一个Python的自带库,内含多种非常实用的方法,我简单学习了一下,发现可以大大提升工作效率,在sf社区内没 ...

最新文章

  1. mysql concat 去掉重复_mysql - concat字段具有共同的重复密钥,并删除那些重复项,从而留下一个 - 堆栈内存溢出...
  2. 初学js----------一些API
  3. java 中sun.net.ftp_开发FTP不要使用sun.net.ftp.ftpClient
  4. semantic ui要装什么才能使用
  5. 科普:Windows下Netcat使用手册
  6. 男人到了中年,还是没钱没人脉,就越要有这3种心理,总会有出息
  7. python-opencv中的cv.CreateImage函数的参数问题
  8. python opencv 找到圆点标定板所有点后通过距离找四个角点2
  9. qq拼音输入法下载|qq拼音输入法纯净版下载
  10. 【Linux应用层】防火墙iptables命令
  11. 【Love2d从青铜到王者】第七篇:Love2d之对象
  12. CC3200学习——blinky资料
  13. Java 简单的摇骰子游戏:案例
  14. End-to-end/hand-crafted的含义(深度学习)
  15. Xmind怎么打开?在线转换成PNG,JPG图片格式,无需安装其他软件
  16. 《哲学史讲演录》——思辨节选---塞诺芬尼 、巴门尼德
  17. Python3.x爬虫下载网页图片
  18. 使用Keras以inceptionV3作为主干网络进行迁移学习遇到的问题
  19. C语言——第三章:C语言程序设计
  20. 通过ROS控制真实机械臂(15) --- 视觉抓取之手眼标定

热门文章

  1. 集群之间数据拷贝distcp性能的调优
  2. git回退历史版本无法上传_Git实用教程(四) | Git本地库操作(查看提交历史、版本前进回退)...
  3. 审计计算机考试报名,审计业务考试计算机(5页)-原创力文档
  4. webmin mysql_MySQL+Webmin轻松创建数据库
  5. dapper 调用 存储过程返回值_数据库事务、存储过程、函数以及触发器之间的区别和联系...
  6. C#调用open cv函数
  7. OCR:深度学习-目标检测-超详细图解Faster R-CNN
  8. void muse.each(object, function)
  9. Bin Packing 装箱问题——NPH问题的暴力枚举 状压DP
  10. 企业面试之LeetCode刷题心得