python中列表和元组的区别


Posted in Python onDecember 18, 2017

如果有了解过python中的列表和元组,你可能会知道相对于列表,元组是不可变的,也就是说元组中的数据不能随意更改。除了列表是用中括号表示而元组是用小括号表示之外,这两种数据类型好像并没有什么不同,都是用来存放一系列的数据,事实真是如此吗?

a = [1, 3, 5, 7, 'a']
b = (1, 3, 5, 7, 'b')
# 现在改变b中的值
b[2] = 4
TypeError                 Traceback (most recent call last)
<ipython-input-2-96f3d2fefb53> in <module>()
   4 
   5 # 现在改变b中数据的值
----> 6 b[2] = 4
TypeError: 'tuple' object does not support item assignment

看起来除了元组不可变之外,列表完全可以取代元组,为什么要多此一举创造出元组这种类型?其实这背后有更深层的含义,列表是用来表示一组相同类型(相同价值)的数据,而元组用来存放不同类型(不同价值)的数据,简单来说,列表是同质的,而元组是异构的。

比如说,现在有一本书,书里面有一些批注。我们用元组来表示书中第几页第几行的内容,像这样:position = (page, line),然后把它放到字典里作为批注的键,表示第几页第几行有批注。同时,我们用列表来表示这些位置,如果有新的位置,可以加入列表。这符合列表可以更改数据的特点。但是如果更改元组里面的数据就没有意义了,因为这些坐标本来就是存在的。

在python的模块中,我们可以找到很多例子:

range(10)
range(0, 10)

比如range方法用来生成一列有序地数据,这些数据是等价的,并没有不同的功能,所以用列表来表示最合适。而像下面的例子:

from datetime import datetime
datetime.now()
datetime.datetime(2017, 12, 17, 20, 23, 13, 578752)

当前时间适合用元组来表式,因为元组中每个数据有不同的功能,或者说有不同的价值,像第一个数据表示年份。

说到这,想起了我们之前说过的具名元组nametuple,它用来快速的生成一个类,可以看成是类的轻量级替代方法,也很符合我们上面说的元组的功能。

Python 相关文章推荐
python 运算符 供重载参考
Jun 11 Python
Python正则表达式分组概念与用法详解
Jun 24 Python
Python插件virtualenv搭建虚拟环境
Nov 20 Python
python3学生名片管理v2.0版
Nov 29 Python
python 列表中[ ]中冒号‘:’的作用
Apr 30 Python
python2爬取百度贴吧指定关键字和图片代码实例
Aug 14 Python
使用python turtle画高达
Jan 19 Python
python实现俄罗斯方块游戏(改进版)
Mar 13 Python
Python PyQt5整理介绍
Apr 01 Python
python如何变换环境
Jul 21 Python
教你利用python实现企业微信发送消息
May 23 Python
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
May 25 Python
Django REST为文件属性输出完整URL的方法
Dec 18 #Python
Python3计算三角形的面积代码
Dec 18 #Python
利用python解决mysql视图导入导出依赖的问题
Dec 17 #Python
python 3.5实现检测路由器流量并写入txt的方法实例
Dec 17 #Python
python中闭包Closure函数作为返回值的方法示例
Dec 17 #Python
django模板语法学习之include示例详解
Dec 17 #Python
详解python string类型 bytes类型 bytearray类型
Dec 16 #Python
You might like
php创建基本身份认证站点的方法详解
2013/06/08 PHP
PHP错误提示的关闭方法详解
2013/06/23 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
PHP中error_reporting函数用法详细介绍
2017/06/11 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
PHP7内核之Reference详解
2019/03/14 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
2019/10/12 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
JavaScript高级程序设计(第3版)学习笔记3 js简单数据类型
2012/10/11 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
2012/12/26 Javascript
基于OO的动画附加插件,可以实现弹跳、渐隐等动画效果 分享
2013/06/24 Javascript
js+CSS实现模拟华丽的select控件下拉菜单效果
2015/09/01 Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
2015/09/27 Javascript
深入浅析JavaScript中对事件的三种监听方式
2015/09/29 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
javascript截图 jQuery插件imgAreaSelect使用详解
2016/05/04 Javascript
Express系列之multer上传的使用
2017/10/27 Javascript
写给小白看的JavaScript异步
2017/11/29 Javascript
新手必须知的Node.js 4个JavaScript基本概念
2018/09/16 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
2019/01/29 Javascript
[42:56]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python实现文件按照日期命名的方法
2015/07/09 Python
详解django自定义中间件处理
2018/11/21 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
2019/04/30 Python
python实现得到当前登录用户信息的方法
2019/06/21 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
2020/06/22 Python
Python用摘要算法生成token及检验token的示例代码
2020/12/01 Python
HTML5 微格式和相关的属性名称
2010/02/10 HTML / CSS
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
运动会稿件100字
2014/02/21 职场文书
班级班风口号大全
2015/12/25 职场文书
详解Apache SkyWalking 告警配置指南
2021/04/22 Servers
MySQL的存储过程和相关函数
2022/04/26 MySQL