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从入门到精通(DAY 1)
Dec 20 Python
Python实现视频下载功能
Mar 14 Python
python实现简单中文词频统计示例
Nov 08 Python
python的dataframe和matrix的互换方法
Apr 11 Python
儿童学习python的一些小技巧
May 27 Python
python学习--使用QQ邮箱发送邮件代码实例
Apr 16 Python
python做反被爬保护的方法
Jul 01 Python
Python实现个人微信号自动监控告警的示例
Jul 03 Python
python交互模式基础知识点学习
Jun 18 Python
keras:model.compile损失函数的用法
Jul 01 Python
用Python爬取某乎手机APP数据
Jun 15 Python
Python OpenCV超详细讲解读取图像视频和网络摄像头
Apr 02 Python
Python实现视频中添加音频工具详解
Dec 06 #Python
Python实现GIF动图以及视频卡通化详解
Python实现照片卡通化
用Python爬取英雄联盟的皮肤详细示例
Python+腾讯云服务器实现每日自动健康打卡
Dec 06 #Python
python 管理系统实现mysql交互的示例代码
Python中super().__init__()测试以及理解
Dec 06 #Python
You might like
js和php邮箱地址验证的实现方法
2014/01/09 PHP
用PHP生成excel文件到指定目录
2015/06/22 PHP
php实现表单提交上传文件功能
2018/05/28 PHP
laravel按天、按小时,查询数据的实例
2019/10/09 PHP
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
如何让页面加载完成后执行js
2013/06/26 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
使用jQuery实现input数值增量和减量的方法
2015/01/24 Javascript
JS实现仿苹果底部任务栏菜单效果代码
2015/08/28 Javascript
javascript仿百度输入框提示自动下拉补全
2016/01/07 Javascript
JS中setTimeout的巧妙用法前端函数节流
2016/03/24 Javascript
基于Vue.js的表格分页组件
2016/05/22 Javascript
JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
2016/06/02 Javascript
Bootstrap作品展示站点实战项目2
2016/10/14 Javascript
AngularJS自定义控件实例详解
2016/12/13 Javascript
jQuery实现两个select控件的互移操作
2016/12/22 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
2017/10/17 Javascript
vue2中使用less简易教程
2018/03/27 Javascript
vue配置font-awesome5的方法步骤
2019/01/27 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
2019/05/05 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
2019/09/27 Javascript
JS求解两数之和算法详解
2020/04/28 Javascript
vue项目中使用bpmn-自定义platter的示例代码
2020/05/11 Javascript
JS删除数组指定值常用方法详解
2020/06/04 Javascript
详谈Python基础之内置函数和递归
2017/06/21 Python
Python 调用 zabbix api的方法示例
2019/01/06 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
Omio荷兰:预订火车、巴士和机票
2018/11/04 全球购物
大学生护理专业自荐信
2013/10/03 职场文书
旅游项目开发策划书
2014/01/18 职场文书
环保建议书作文
2014/03/12 职场文书
项目投资意向书
2014/04/01 职场文书
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技