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的randrange()方法使用教程
May 15 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
Sep 13 Python
Python读取txt某几列绘图的方法
Oct 14 Python
3分钟学会一个Python小技巧
Nov 23 Python
Python判断有效的数独算法示例
Feb 23 Python
python通过http下载文件的方法详解
Jul 26 Python
PyCharm2018 安装及破解方法实现步骤
Sep 09 Python
Django和Flask框架优缺点对比
Oct 24 Python
Pytorch 之修改Tensor部分值方式
Dec 27 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
Jan 16 Python
django项目中新增app的2种实现方法
Apr 01 Python
详解用Python把PDF转为Word方法总结
Apr 27 Python
Python实现视频中添加音频工具详解
Dec 06 #Python
Python实现GIF动图以及视频卡通化详解
Python实现照片卡通化
用Python爬取英雄联盟的皮肤详细示例
Python+腾讯云服务器实现每日自动健康打卡
Dec 06 #Python
python 管理系统实现mysql交互的示例代码
Python中super().__init__()测试以及理解
Dec 06 #Python
You might like
Win7环境下Apache连接MySQL提示连接已重置的解决办法
2017/05/09 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
jQuery解决input超多的表单提交
2015/08/10 Javascript
jQuery通过ajax请求php遍历json数组到table中的代码(推荐)
2016/06/12 Javascript
jQuery过滤选择器经典应用
2016/08/18 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
2020/11/30 Javascript
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
php 解压zip压缩包内容到指定目录的实例
2018/01/23 Javascript
jQuery简单判断值是否存在于数组中的方法示例
2018/04/17 jQuery
详解angular路由高亮之RouterLinkActive
2018/04/28 Javascript
基于JavaScript实现一个简单的Vue
2018/09/26 Javascript
微信小程序实现登录注册tab切换效果
2020/12/29 Javascript
浅谈Vue.js组件(二)
2019/04/09 Javascript
vue cli 3.0通用打包配置代码,不分一二级目录
2020/09/02 Javascript
[02:07]2017国际邀请赛中国区预选赛直邀战队前瞻
2017/06/23 DOTA
python实现apahce网站日志分析示例
2014/04/02 Python
Python中字符串对齐方法介绍
2015/05/21 Python
Mac 上切换Python多版本
2017/06/17 Python
itchat和matplotlib的结合使用爬取微信信息的实例
2017/08/25 Python
Python迷宫生成和迷宫破解算法实例
2019/12/24 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
Python关于反射的实例代码分享
2020/02/20 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
2020/04/24 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
基于html5 DeviceOrientation 实现微信摇一摇功能
2015/09/25 HTML / CSS
世界排名第一的万圣节服装店:Spirit Halloween
2018/10/16 全球购物
eBay爱尔兰站:eBay.ie
2019/08/09 全球购物
介绍一下JNDI的基本概念
2013/07/26 面试题
生态学毕业生自荐信
2013/10/27 职场文书
村委会主任先进事迹
2014/01/15 职场文书
自愿离婚协议书范本
2014/09/13 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
个人四风问题整改措施
2014/10/24 职场文书
违纪开除通知书
2015/04/25 职场文书
对学校的意见和建议
2015/06/04 职场文书
CSS 左边固定宽右边自适应的6种方法
2022/05/15 HTML / CSS