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获取当前时间的方法
Jan 14 Python
Python logging模块学习笔记
May 24 Python
整理Python最基本的操作字典的方法
Apr 24 Python
举例讲解Django中数据模型访问外键值的方法
Jul 21 Python
Python File readlines() 使用方法
Mar 19 Python
Python3.6连接Oracle数据库的方法详解
May 18 Python
Python中利用aiohttp制作异步爬虫及简单应用
Nov 29 Python
Python生成MD5值的两种方法实例分析
Apr 26 Python
python找出一个列表中相同元素的多个索引实例
Jun 11 Python
python替换字符串中的子串图文步骤
Jun 19 Python
基于opencv实现简单画板功能
Aug 02 Python
Django如何实现密码错误报错提醒
Sep 04 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与javascript实现变量交互的示例代码
2013/07/23 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
2014/07/18 PHP
php采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
php 把数字转换成汉字的代码
2015/07/21 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
2019/01/16 PHP
Opacity.js
2007/01/22 Javascript
Javascript valueOf 使用方法
2008/12/28 Javascript
javascript 字符 Escape,encodeURI,encodeURIComponent
2009/07/09 Javascript
基于jquery实现图片广告轮换效果代码
2011/07/07 Javascript
JavaScript中检查对象property的存在性方法介绍
2014/12/30 Javascript
nodejs批量修改文件编码格式
2015/01/22 NodeJs
EasyUI,点击开启编辑框,并且编辑框获得焦点的方法
2015/03/01 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
jQuery Validate插件实现表单验证
2016/08/19 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
JS 实现计算器详解及实例代码(一)
2017/01/08 Javascript
原生js实现类似fullpage的单页/全屏滚动
2017/01/22 Javascript
jQuery实现级联下拉框实战(5)
2017/02/08 Javascript
Vue.js实现图片的随意拖动方法
2018/03/08 Javascript
微信小程序登录session的使用
2019/03/17 Javascript
在node中使用jwt签发与验证token的方法
2019/04/03 Javascript
微信小程序开发实现消息推送
2020/11/18 Javascript
一起深入理解js中的事件对象
2021/02/06 Javascript
[03:41]2018完美盛典-《Fight With Us》
2018/12/16 DOTA
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
python 函数中的参数类型
2020/02/11 Python
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
工程地质勘察专业大学生求职信
2013/10/13 职场文书
内容编辑个人求职信
2013/12/10 职场文书
班组长安全职责
2014/01/05 职场文书
演讲稿怎么写
2014/01/07 职场文书
2015年感恩节演讲稿(优选篇)
2015/03/20 职场文书
健康证明
2015/06/19 职场文书
办公室管理规章制度
2015/08/04 职场文书
Java面试题冲刺第十八天--Spring框架3
2021/08/07 面试题