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 相关文章推荐
github配置使用指南
Nov 18 Python
Python中optparse模块使用浅析
Jan 01 Python
在Django的form中使用CSS进行设计的方法
Jul 18 Python
python开发中module模块用法实例分析
Nov 12 Python
Python编程中对super函数的正确理解和用法解析
Jul 02 Python
解决Python中字符串和数字拼接报错的方法
Oct 23 Python
Python3解决棋盘覆盖问题的方法示例
Dec 07 Python
Tensorflow: 从checkpoint文件中读取tensor方式
Feb 10 Python
Python求区间正整数内所有素数之和的方法实例
Oct 13 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
Jan 29 Python
Python读写Excel表格的方法
Mar 02 Python
python的netCDF4批量处理NC格式文件的操作方法
Mar 21 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实现的Curl封装类Curl.class.php用法实例分析
2015/09/25 PHP
PHP Header用于页面跳转时的几个注意事项
2016/10/21 PHP
关于PHP定时发送服务的解决办法
2017/04/23 PHP
struts2 jquery 打造无限层次的树
2009/10/23 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
jQuery找出网页上最高元素的方法
2015/03/20 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
2015/12/02 Javascript
五种js判断是否为整数类型方式
2015/12/03 Javascript
Select下拉框模糊查询功能实现代码
2016/07/22 Javascript
NodeJS遍历文件生产文件列表功能示例
2017/01/22 NodeJs
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
基于BootStrap的文本编辑器组件Summernote
2017/10/27 Javascript
JavaScript中字符串的常用操作方法及特殊字符
2018/03/18 Javascript
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)
2019/12/04 Javascript
jquery实现异步文件上传ajaxfileupload.js
2020/10/23 jQuery
python批量提取word内信息
2015/08/09 Python
python中Matplotlib实现绘制3D图的示例代码
2017/09/04 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
学习python分支结构
2019/05/17 Python
CSS3实现类似翻书效果的过渡动画的示例代码
2019/09/06 HTML / CSS
美国最大的万圣节服装网站:HalloweenCostumes.com
2017/10/12 全球购物
优秀经理事迹材料
2014/02/01 职场文书
总经理岗位职责描述
2014/02/08 职场文书
高三高考决心书
2014/03/11 职场文书
网络信息安全承诺书
2014/03/26 职场文书
艺术节主持词
2014/04/02 职场文书
党支部综合考察材料
2014/05/19 职场文书
检讨书格式
2015/01/23 职场文书
幼儿园小班开学寄语
2015/05/27 职场文书
2016春季运动会前导词
2015/11/25 职场文书
大学毕业生自我鉴定范文
2019/06/21 职场文书
nginx基于域名,端口,不同IP的虚拟主机设置的实现
2021/03/31 Servers
Java实战之用Swing实现通讯录管理系统
2021/06/13 Java/Android