Python可变集合和不可变集合的构造方法大全


Posted in Python onDecember 06, 2021

 Python集合又是一种新的数据类型,集合有两种形式:可变集合(set())和不可变集合(frozenset())两种,这两种集合操作方法比较类似,但是在底层性质上有截然想法的区别。集合是一种无序的,不重复且不可随机访问的元素集合,在概念和运算上和数学中的集合类似,集合分为可变和不可变两种。

一、对比数据类型

下面是我们学习过的一些数据类型,下面的注释是对比这些数据类型的结果,供学习集合前的参考。

str1 = 'pythonpython'  # 不可变,有序:可以通过下标访问
list1 = [1, 2, 3, 2]  # 可变,有序:可以通过下标访问
tup1 = (1, 2, 3, 2)  # 不可变,有序:可以通过下标访问
dict1 = {'name': 'Tom', 'age': 18, 'love': 'python'}  # 可变,无序:但可以通过键访问

二、可变集合构造方法

1.直接构造

set2 = {'name', 19, 'python'}
print(set2, type(set2))

返回结果:

{19, 'python', 'name'} <class 'set'>

2.使用函数构造

str1 = 'pythonpython'
list1 = [1, 2, 3, 2]
tup1 = (1, 2, 3, 2)
dict1 = {'name': 'Tom', 'age': 18, 'love': 'python'}
set3 = set(str1)
print(set3, type(set3))
set4 = set(list1)
print(set4, type(set4))
set5 = set(tup1)
print(set5, type(set5))
set6 = set(dict1)
print(set6, type(set6))

返回结果:

{'t', 'n', 'p', 'o', 'h', 'y'} <class 'set'>
{1, 2, 3} <class 'set'>
{1, 2, 3} <class 'set'>
{'love', 'name', 'age'} <class 'set'>

3.使用推导式构造集合

set7 = set(i for i in range(1, 5))
print(set7, type(set7))

set8 = {i for i in list1}
print(set8, type(set8))

set8 = {i for i in tup1}
print(set8, type(set8))

返回结果:

{1, 2, 3, 4} <class 'set'>
{1, 2, 3} <class 'set'>
{1, 2, 3} <class 'set'>

三、不可变集合的构造方法

不可变集合构造(与可变集合类似,把set改为frozenset即可)。

1.使用frozenset()函数构造

set3 = frozenset(str1)
print(set3, type(set3))
set4 = frozenset(list1)
print(set4, type(set4))
set5 = frozenset(tup1)
print(set5, type(set5))
set6 = frozenset(dict1)
print(set6, type(set6))
frozenset({'p', 'n', 't', 'h', 'y', 'o'}) <class 'frozenset'>
frozenset({1, 2, 3}) <class 'frozenset'>
frozenset({1, 2, 3}) <class 'frozenset'>
frozenset({'name', 'age', 'love'}) <class 'frozenset'>

2.推导式构造

set7 = frozenset(i for i in range(1, 5))
print(set7, type(set7))

返回结果:

frozenset({1, 2, 3, 4}) <class 'frozenset'>

四、集合构造注意事项

1.集合不能想其他数据集一样使用特有的符号来构造,集合使用的语法符号是{},和字典是一样的,这时候直接使用{}来构造的,系统无法判断数据类型是字典还是集合,会默认为集合。

set9 = {}
print(type(set9))  # 默认为字典:<class 'dict'>

正确的方法只有使用构造函数来实现了。

set9 = set()
set99 = frozenset()

2.集合中不能包含字典和列表这样的可变类型元素

set10 = {'name', 19, [1, 2, 3, 2]}

列表不可哈希:TypeError: unhashable type: 'list'

到此这篇关于Python可变集合和不可变集合的构造方法大全的文章就介绍到这了,更多相关Python可变集合和不可变集合内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
用Python中的字典来处理索引统计的方法
May 05 Python
python中json格式数据输出的简单实现方法
Oct 31 Python
快速解决PyCharm无法引用matplotlib的问题
May 24 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
Jul 10 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 26 Python
Python在图片中插入大量文字并且自动换行
Jan 02 Python
python基础梳理(一)(推荐)
Apr 06 Python
Python-Flask:动态创建表的示例详解
Nov 22 Python
python-sys.stdout作为默认函数参数的实现
Feb 21 Python
基于Python实现2种反转链表方法代码实例
Jul 06 Python
Python 如何将integer转化为罗马数(3999以内)
Jun 05 Python
手残删除python之后的补救方法
Jun 26 Python
Python实现视频中添加音频工具详解
Dec 06 #Python
Python实现GIF动图以及视频卡通化详解
Python实现照片卡通化
用Python爬取英雄联盟的皮肤详细示例
Python+腾讯云服务器实现每日自动健康打卡
Dec 06 #Python
python 管理系统实现mysql交互的示例代码
Python中super().__init__()测试以及理解
Dec 06 #Python
You might like
php代码收集表单内容并写入文件的代码
2012/01/29 PHP
用PHP实现浏览器点击下载TXT文档的方法详解
2013/06/02 PHP
PHP 正则表达式常用函数
2014/08/17 PHP
php利用嵌套数组拼接与解析json的方法
2017/02/07 PHP
详解Yii2.0 rules验证规则集合
2017/03/21 PHP
jq选项卡鼠标延迟的插件实例
2013/05/13 Javascript
用javascript为页面添加天气显示实现思路及代码
2013/12/02 Javascript
node.js中的console.error方法使用说明
2014/12/10 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
JS中Safari浏览器中的Date
2017/07/17 Javascript
vue webpack开发访问后台接口全局配置的方法
2018/09/18 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
微信小程序实现省市区三级地址选择
2020/06/21 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
2018/11/30 Javascript
微信小程序中的video视频实现 自定义播放按钮、封面图、视频封面上文案
2020/01/02 Javascript
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
[42:22]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第一局
2016/02/27 DOTA
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
Python时间戳使用和相互转换详解
2017/12/11 Python
Python中装饰器学习总结
2018/02/10 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
对python中for、if、while的区别与比较方法
2018/06/25 Python
Python 单例设计模式用法实例分析
2019/09/23 Python
django 前端页面如何实现显示前N条数据
2020/03/16 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
2020/04/24 Python
python实现跨年表白神器--你值得拥有
2021/01/04 Python
python包的导入方式总结
2021/03/02 Python
海信商城:海信电视、科龙空调、容声冰箱官方专卖
2017/02/07 全球购物
英国门把手公司:Door Handle Company
2019/05/12 全球购物
档案检查欢迎词
2014/01/13 职场文书
大学生工作求职信
2014/06/23 职场文书
考研英语复习计划
2015/01/19 职场文书
2016年三严三实党课学习心得体会
2016/01/06 职场文书
导游词之广州陈家祠
2019/10/21 职场文书
详解MySQL中的pid与socket
2021/06/15 MySQL
详解SQL报错盲注
2022/07/23 SQL Server