Python frozenset集合(set集合的不可变版本)
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集合的不可变版本)相关推荐
- 4.20 Python frozenset集合(set集合的不可变版本)
set 集合是可变序列,程序可以改变序列中的元素:frozenset 集合是不可变序列,程序不能改变序列中的元素.set 集合中所有能改变集合本身的方法,比如 remove().discard().a ...
- python中的集合set类型是可变的吗_[Python] Python数据类型(三)集合类型之set集合和frozenset集合...
1.集合基本概念 集合是0-n个对象引用的无序组合,集合中存储的元素不可重复,因此这些对象引用的引用的对象必须是可哈希运算的 . 1.python中提供了两种内置的集合类型:可变的set类型和固定的 ...
- Python基础---Set(集合)Frozenset(不可变集合)
SET对象是由具有唯一性的 hashable 对象所组成的无序多项集,否则会报"unhashable type"的错误.目前有两种内置集合类型,set 和 frozenset. s ...
- Python frozenset 集合 - Python零基础入门教程
目录 一.Python frozenset 集合语法 二.Python frozenset 集合使用 三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> P ...
- [Python] Python数据类型(三)集合类型之set集合和frozenset集合
1.集合基本概念 集合是0-n个对象引用的无序组合,集合中存储的元素不可重复,因此这些对象引用的引用的对象必须是可哈希运算的 . 1.python中提供了两种内置的集合类型:可变的set类型和固定的f ...
- Python frozenset集合
文章目录 Python frozenset集合 Python frozenset集合 set 集合是可变序列,程序可以改变序列中的元素:frozenset 集合是不可变序列,程序不能改变序列中的元素. ...
- 来自python的【set集合总结/frozenset】
set定义 集合(set) 是一个无序的不重复的元素序列,能够去重复,删除重复项 使用{},或者set()函数穿件,与dict的符号一样. 空集合必须使用set(),因为{}是用来创建空字典dict ...
- 『Python基础-11』集合 (set)
# 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...
- Python基本语法_集合set/frozenset_内建方法详解
目录 目录 前言 软件环境 可变集合Set set函数创建集合 创建空集合 集合元素的唯一性 集合推导式 set类型对象的内置方法 add增加一个元素 remove删除一个元素 pop随机删除并返回一 ...
最新文章
- Bootstrap之轮播图
- CSS3盒子阴影box-shadow
- html 中写样式,css样式中黑体怎么写
- 微服务网关 Kong 科普
- Hive mysql 内连接_Hive-表连接 | 学步园
- 网页编程技术二(块级元素和行内标签)
- IBM 的大型机 z Systems 引入 Go 语言
- AA.Dapper升级了
- mysql 事b务 查询_MySQL进阶学习笔记二(包括连接查询、子查询、联合查询、事务、存储过程)...
- Java集合框架知多少——干货!!!
- 【百度地图-安卓SDK】从头开始写android程序
- c语言数组转指针,(转)c语言指针数组
- 教你给视频添加马赛克的剪辑技巧,轻松简单
- 树莓派安装wps2019教程
- 数据挖掘实战—航空公司客户价值分析
- Web前端农历/阴历转换
- 【Spring AOP】静态代理设计模式、Spring 动态代理开发详解、切入点详解(切入点表达式、切入点函数)
- [Python3] 008 列表内涵,“满腹经纶”
- 没有人能比快递员更懂通信协议(sig mesh协议栈之网络架构)
- 旅途的意义 ——《解忧杂货店》
热门文章
- rtmp时间戳pts、dts矫正解决卡顿快放慢放问题与倍速播放的实现
- 一个转身,也许就已经一辈子错过。梁静茹结婚玛莎未获邀请。刘烨在婚礼前,把自己关起来哭了好长时间。
- 64位Windows上最好的免费软件(Best Free Windows 64-bit Software)
- 如何将linux系统删除,如何删除linux??
- 用云存储和CDN轻松搞定网站图片
- 通信原理包络是什么意思_为什么齿轮不能少于17个齿数?
- Python 7.8 熟食店
- Gpu 服务器相关驱动安装链接
- sysctl 默认值_/etc/sysctl.conf各个参数说明
- 在线考试系统的并发性介绍