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的Django框架中的select_related函数对QuerySet 查询的优化
Apr 01 Python
总结python实现父类调用两种方法的不同
Jan 15 Python
Python AES加密模块用法分析
May 22 Python
Python编程之string相关操作实例详解
Jul 22 Python
Python实现带参数的用户验证功能装饰器示例
Dec 14 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
Dec 18 Python
django的ORM模型的实现原理
Mar 04 Python
python中eval与int的区别浅析
Aug 11 Python
python多进程并行代码实例
Sep 30 Python
python manage.py runserver流程解析
Nov 08 Python
Numpy将二维数组添加到空数组的实现
Dec 05 Python
如何用tempfile库创建python进程中的临时文件
Jan 28 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正则删除html代码中class样式属性的方法
2017/05/24 PHP
javascript new fun的执行过程
2010/08/05 Javascript
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
js获取URL的参数的方法(getQueryString)示例
2013/09/29 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
jQuery中toggle()函数的使用实例
2015/04/17 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
jQuery图片左右滚动代码 有左右按钮实例
2016/06/20 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
nodejs加密Crypto的实例代码
2016/07/07 NodeJs
jquery编写日期选择器
2017/03/16 Javascript
JavaScript数组排序reverse()和sort()方法详解
2017/12/24 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
2018/01/25 Javascript
Vue多种方法实现表头和首列固定的示例代码
2018/02/02 Javascript
js调用设备摄像头的方法
2018/07/19 Javascript
vue实现压缩图片预览并上传功能(promise封装)
2019/01/10 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
VUE实时监听元素距离顶部高度的操作
2020/07/29 Javascript
简单了解three.js 着色器材质
2020/08/03 Javascript
[01:42]辉夜杯战队访谈宣传片—FANTUAN
2015/12/25 DOTA
[04:02]DOTA2上海特锦赛小组赛第二日recap精彩回顾
2016/02/28 DOTA
如何在Python中编写并发程序
2016/02/27 Python
Python实现的堆排序算法原理与用法实例分析
2017/11/22 Python
python绘制条形图方法代码详解
2017/12/19 Python
Python实现定时精度可调节的定时器
2018/04/15 Python
Python下使用Scrapy爬取网页内容的实例
2018/05/21 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
Python Django基础二之URL路由系统
2019/07/18 Python
Python使用import导入本地脚本及导入模块的技巧总结
2019/08/07 Python
Python 函数绘图及函数图像微分与积分
2019/11/20 Python
英国床和浴室商场:Bed & Bath Emporium
2018/05/20 全球购物
医生实习工作总结的自我评价
2013/09/27 职场文书
婚假请假条格式及范文
2014/04/10 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
中国梦党课学习心得体会
2016/01/05 职场文书