Python frozenset集合(set集合的不可变版本)

set 集合是可变序列,程序可以改变序列中的元素;frozenset 集合是不可变序列,程序不能改变序列中的元素。set 集合中所有能改变集合本身的方法,比如 remove()、discard()、add() 等,frozenset 都不支持;set 集合中不改变集合本身的方法,fronzenset 都支持。

我们可以在交互式编程环境中输入dir(frozenset)来查看 frozenset 集合支持的方法:

>>> dir(frozenset)
['copy', 'difference', 'intersection', 'isdisjoint', 'issubset', 'issuperset', 'symmetric_difference', 'union']

frozenset 集合的这些方法和 set 集合中同名方法的功能是一样的。

两种情况下可以使用 fronzenset:

当集合的元素不需要改变时,我们可以使用 fronzenset 替代 set,这样更加安全。

有时候程序要求必须是不可变对象,这个时候也要使用 fronzenset 替代 set。比如,字典(dict)的键(key)就要求是不可变对象。

下面程序演示了 frozenset 的用法:

s = {'Python', 'C', 'C++'}
fs = frozenset(['Java', 'Shell'])
s_sub = {'PHP', 'C#'}
#向set集合中添加frozenset
s.add(fs)
print('s =', s)
#向为set集合添加子set集合
s.add(s_sub)
print('s =', s)

运行结果:

s = {'Python', frozenset({'Java', 'Shell'}), 'C', 'C++'}
Traceback (most recent call last):File "C:\Users\mozhiyan\Desktop\demo.py", line 11, in <module>s.add(s_sub)
TypeError: unhashable type: 'set'

需要注意的是,set 集合本身的元素必须是不可变的, 所以 set 的元素不能是 set,只能是 frozenset。第 6 行代码向 set 中添加 frozenset 是没问题的,因为 frozenset 是不可变的;但是,第 10 行代码中尝试向 set 中添加子 set,这是不允许的,因为 set 是可变的。

Python frozenset集合(set集合的不可变版本)相关推荐

  1. 4.20 Python frozenset集合(set集合的不可变版本)

    set 集合是可变序列,程序可以改变序列中的元素:frozenset 集合是不可变序列,程序不能改变序列中的元素.set 集合中所有能改变集合本身的方法,比如 remove().discard().a ...

  2. python中的集合set类型是可变的吗_[Python] Python数据类型(三)集合类型之set集合和frozenset集合...

    1.集合基本概念 集合是0-n个对象引用的无序组合,集合中存储的元素不可重复,因此这些对象引用的引用的对象必须是可哈希运算的 .  1.python中提供了两种内置的集合类型:可变的set类型和固定的 ...

  3. Python基础---Set(集合)Frozenset(不可变集合)

    SET对象是由具有唯一性的 hashable 对象所组成的无序多项集,否则会报"unhashable type"的错误.目前有两种内置集合类型,set 和 frozenset. s ...

  4. Python frozenset 集合 - Python零基础入门教程

    目录 一.Python frozenset 集合语法 二.Python frozenset 集合使用 三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> P ...

  5. [Python] Python数据类型(三)集合类型之set集合和frozenset集合

    1.集合基本概念 集合是0-n个对象引用的无序组合,集合中存储的元素不可重复,因此这些对象引用的引用的对象必须是可哈希运算的 . 1.python中提供了两种内置的集合类型:可变的set类型和固定的f ...

  6. Python frozenset集合

    文章目录 Python frozenset集合 Python frozenset集合 set 集合是可变序列,程序可以改变序列中的元素:frozenset 集合是不可变序列,程序不能改变序列中的元素. ...

  7. 来自python的【set集合总结/frozenset】

    set定义 集合(set) 是一个无序的不重复的元素序列,能够去重复,删除重复项 使用{},或者set()函数穿件,与dict的符号一样. 空集合必须使用set(),因为{}是用来创建空字典dict ...

  8. 『Python基础-11』集合 (set)

    # 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...

  9. Python基本语法_集合set/frozenset_内建方法详解

    目录 目录 前言 软件环境 可变集合Set set函数创建集合 创建空集合 集合元素的唯一性 集合推导式 set类型对象的内置方法 add增加一个元素 remove删除一个元素 pop随机删除并返回一 ...

最新文章

  1. Bootstrap之轮播图
  2. CSS3盒子阴影box-shadow
  3. html 中写样式,css样式中黑体怎么写
  4. 微服务网关 Kong 科普
  5. Hive mysql 内连接_Hive-表连接 | 学步园
  6. 网页编程技术二(块级元素和行内标签)
  7. IBM 的大型机 z Systems 引入 Go 语言
  8. AA.Dapper升级了
  9. mysql 事b务 查询_MySQL进阶学习笔记二(包括连接查询、子查询、联合查询、事务、存储过程)...
  10. Java集合框架知多少——干货!!!
  11. 【百度地图-安卓SDK】从头开始写android程序
  12. c语言数组转指针,(转)c语言指针数组
  13. 教你给视频添加马赛克的剪辑技巧,轻松简单
  14. 树莓派安装wps2019教程
  15. 数据挖掘实战—航空公司客户价值分析
  16. Web前端农历/阴历转换
  17. 【Spring AOP】静态代理设计模式、Spring 动态代理开发详解、切入点详解(切入点表达式、切入点函数)
  18. [Python3] 008 列表内涵,“满腹经纶”
  19. 没有人能比快递员更懂通信协议(sig mesh协议栈之网络架构)
  20. 旅途的意义 ——《解忧杂货店》

热门文章

  1. rtmp时间戳pts、dts矫正解决卡顿快放慢放问题与倍速播放的实现
  2. 一个转身,也许就已经一辈子错过。梁静茹结婚玛莎未获邀请。刘烨在婚礼前,把自己关起来哭了好长时间。
  3. 64位Windows上最好的免费软件(Best Free Windows 64-bit Software)
  4. 如何将linux系统删除,如何删除linux??
  5. 用云存储和CDN轻松搞定网站图片
  6. 通信原理包络是什么意思_为什么齿轮不能少于17个齿数?
  7. Python 7.8 熟食店
  8. Gpu 服务器相关驱动安装链接
  9. sysctl 默认值_/etc/sysctl.conf各个参数说明
  10. 在线考试系统的并发性介绍