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中使用smtplib和email模块发送邮件实例
Apr 22 Python
python3.6连接MySQL和表的创建与删除实例代码
Dec 28 Python
pycharm 在windows上编辑代码用linux执行配置的方法
Oct 27 Python
用python 实现在不确定行数情况下多行输入方法
Jan 28 Python
Python面向对象实现一个对象调用另一个对象操作示例
Apr 08 Python
Python使用字典实现的简单记事本功能示例
Aug 15 Python
浅析PyTorch中nn.Linear的使用
Aug 18 Python
python实现七段数码管和倒计时效果
Nov 23 Python
Python3 pickle对象串行化代码实例解析
Mar 23 Python
python 读取二进制 显示图片案例
Apr 24 Python
浅谈Python 参数与变量
Jun 20 Python
python中的装饰器该如何使用
Jun 18 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 5.3新增魔术方法__invoke概述
2014/07/23 PHP
PHP遍历XML文档所有节点的方法
2015/03/12 PHP
PHP中把对象数组转换成普通数组的方法
2015/07/10 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
php有效防止图片盗用、盗链的两种方法
2016/11/01 PHP
PHP经典设计模式之依赖注入定义与用法详解
2019/05/21 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
javascript 写类方式之一
2009/07/05 Javascript
javascript实现的使用方向键控制光标在table单元格中切换
2010/11/17 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
谈谈关于JavaScript 中的 MVC 模式
2013/04/11 Javascript
js setTimeout opener的用法示例详解
2013/10/23 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
2014/05/20 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
基于javascript html5实现3D翻书特效
2016/03/14 Javascript
JavaScript html5 canvas绘制时钟效果(二)
2016/03/27 Javascript
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
2019/05/16 Javascript
微信小程序canvas绘制圆角base64图片的实现
2019/08/18 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
ES6函数实现排它两种写法解析
2020/05/13 Javascript
[02:38]DOTA2 夜魇暗潮2020活动介绍官方视频
2020/11/04 DOTA
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
python中使用iterrows()对dataframe进行遍历的实例
2018/06/09 Python
Python3单行定义多个变量或赋值方法
2018/07/12 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
2020/02/27 Python
Python super()方法原理详解
2020/03/31 Python
详解Python中第三方库Faker
2020/09/25 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
Django权限控制的使用
2021/01/07 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
教育技术职业规划范文
2014/03/04 职场文书
5s推行计划书
2014/05/06 职场文书
事业单位岗位说明书
2015/10/08 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers