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之eval()函数危险性浅析
Jul 03 Python
python 动态加载的实现方法
Dec 22 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 Python
完美解决在oj中Python的循环输入问题
Jun 25 Python
Django如何自定义分页
Sep 25 Python
python内置数据类型之列表操作
Nov 12 Python
python 多进程队列数据处理详解
Dec 23 Python
Python程序控制语句用法实例分析
Jan 14 Python
最新pycharm安装教程
Nov 18 Python
详解Python GUI编程之PyQt5入门到实战
Dec 10 Python
Python基础知识学习之类的继承
May 31 Python
只用Python就可以制作的简单词云
Jun 07 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中source #N问题的解决方法
2014/01/27 PHP
在php中设置session用memcache来存储的方法总结
2016/01/14 PHP
php创建类并调用的实例方法
2019/09/25 PHP
将string解析为json的几种方式小结
2010/11/11 Javascript
再谈querySelector和querySelectorAll的区别与联系
2012/04/20 Javascript
jquery 定位input元素的几种方法小结
2013/07/28 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
jquery淡化版banner异步图片文字效果切换图片特效
2014/04/08 Javascript
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
2016/05/31 Javascript
基于js实现checkbox批量选中操作
2016/11/22 Javascript
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
vue项目中使用tinymce编辑器的步骤详解
2018/09/11 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
python服务器端收发请求的实现代码
2014/09/29 Python
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
Python扫描IP段查看指定端口是否开放的方法
2015/06/09 Python
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
Python检测数据类型的方法总结
2019/05/20 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
详解Python文件修改的两种方式
2019/08/22 Python
python多任务之协程的使用详解
2019/08/26 Python
python logging设置level失败的解决方法
2020/02/19 Python
法国体育用品商店:GO Sport
2019/10/23 全球购物
大学活动策划书范文
2014/01/10 职场文书
乡镇党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
寝室长工作失责检讨书
2014/10/06 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
2014年监理个人工作总结
2014/12/11 职场文书
校园开放日新闻稿
2015/07/17 职场文书
校园音乐节目广播稿
2015/08/19 职场文书
小学美术教学反思
2016/02/17 职场文书
nginx请求限制配置方法
2021/07/09 Servers