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 连连看连接算法
Nov 22 Python
python网络编程学习笔记(一)
Jun 09 Python
在Python的Django框架中创建和使用模版
Jul 15 Python
django请求返回不同的类型图片json,xml,html的实例
May 22 Python
python多进程实现文件下载传输功能
Jul 28 Python
Python开发最牛逼的IDE——pycharm
Aug 01 Python
Django中使用Celery的方法示例
Nov 29 Python
python构建基础的爬虫教学
Dec 23 Python
Python中super函数用法实例分析
Mar 18 Python
python celery分布式任务队列的使用详解
Jul 08 Python
Python实现定时监测网站运行状态的示例代码
Sep 30 Python
Python list列表删除元素的4种方法
Nov 01 Python
Python实现视频中添加音频工具详解
Dec 06 #Python
Python实现GIF动图以及视频卡通化详解
Python实现照片卡通化
用Python爬取英雄联盟的皮肤详细示例
Python+腾讯云服务器实现每日自动健康打卡
Dec 06 #Python
python 管理系统实现mysql交互的示例代码
Python中super().__init__()测试以及理解
Dec 06 #Python
You might like
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
PHP中如何调用webservice的实例参考
2013/04/25 PHP
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
php注册登录系统简化版
2020/12/28 PHP
PHP中抽象类、接口的区别与选择分析
2016/03/29 PHP
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
jquery阻止冒泡事件使用模拟事件
2013/09/06 Javascript
自己编写的类似JS的trim方法
2013/10/09 Javascript
Jquery给基本控件的取值、赋值示例
2014/05/23 Javascript
js在数组中删除重复的元素自保留一个(两种实现思路)
2014/08/22 Javascript
jquery让指定的元素闪烁显示的方法
2015/03/17 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
酷炫jQuery全屏3D焦点图动画效果
2016/03/22 Javascript
JavaScript实现的微信二维码图片生成器的示例
2016/10/26 Javascript
Javascript实现时间倒计时效果
2017/07/15 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
2018/02/03 Javascript
代码详解JS操作剪贴板
2018/02/11 Javascript
解决vue处理axios post请求传参的问题
2018/03/05 Javascript
修改npm全局安装模式的路径方法
2018/05/15 Javascript
vue v-model动态生成详解
2018/06/30 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
vue分页器组件编写方法详解
2019/06/28 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
python爬取网站数据保存使用的方法
2013/11/20 Python
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
python reduce 函数使用详解
2017/12/05 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
tensorflow 分类损失函数使用小记
2020/02/18 Python
如何通过python计算圆周率PI
2020/11/11 Python
数字漫画:comiXology
2020/06/13 全球购物
大学生专科学习生活的自我评价
2013/12/07 职场文书
十岁生日同学答谢词
2014/01/19 职场文书
新品发布会主持词
2014/04/02 职场文书
2014年党员自我评议(5篇)
2014/09/12 职场文书
财务工作个人总结
2015/02/27 职场文书
银行自荐信怎么写
2015/03/05 职场文书