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的web框架编写前端模版的教程
Apr 30 Python
详解JavaScript编程中的window与window.screen对象
Oct 26 Python
Python代码实现KNN算法
Dec 20 Python
Python中static相关知识小结
Jan 02 Python
Python面向对象程序设计之私有属性及私有方法示例
Apr 08 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
Sep 11 Python
python实现文件批量编码转换及注意事项
Oct 14 Python
基于python-pptx库中文文档及使用详解
Feb 14 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
Apr 11 Python
Python过滤掉numpy.array中非nan数据实例
Jun 08 Python
Elasticsearch py客户端库安装及使用方法解析
Sep 14 Python
Python max函数中key的用法及原理解析
Jun 26 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
apache+php完美解决301重定向的两种方法
2011/06/08 PHP
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
php实现的验证码文件类实例
2015/06/18 PHP
WordPress网站性能优化指南
2015/11/18 PHP
地址栏上的一段语句,改变页面的风格。(教程)
2008/04/02 Javascript
ASP Json Parser修正版
2009/12/06 Javascript
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
JSON JQUERY模板实现说明
2010/07/03 Javascript
页面载入结束自动调用js函数示例
2013/09/23 Javascript
Javascript 按位与赋值运算符 (&amp;=)使用介绍
2014/02/04 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
js实现字符串和数组之间相互转换操作
2016/01/12 Javascript
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
iframe中使用jquery进行查找的方法【案例分析】
2016/06/17 Javascript
关于javascript作用域的常见面试题分享
2017/06/18 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
2018/10/31 Javascript
微信小程序实现点赞、取消点赞功能
2018/11/02 Javascript
Javascript柯里化实现原理及作用解析
2020/10/22 Javascript
Python 探针的实现原理
2016/04/23 Python
使用python获取csv文本的某行或某列数据的实例
2018/04/03 Python
如何使用Python标准库进行性能测试
2019/06/25 Python
使用python将excel数据导入数据库过程详解
2019/08/27 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
沙特阿拉伯排名第一的在线时尚购物应用程序:1Zillion
2020/08/08 全球购物
澳洲的UGG雪地靴超级市场:Uggs.com.au
2020/04/06 全球购物
财务简历的自我评价
2014/03/05 职场文书
学习张林森心得体会
2014/09/10 职场文书
2015年招聘工作总结
2014/12/12 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
教师党员个人总结
2015/02/10 职场文书
土建技术员岗位职责
2015/04/11 职场文书
体育委员竞选稿
2015/11/21 职场文书
Python数据分析入门之数据读取与存储
2021/05/13 Python
python四种出行路线规划的实现
2021/06/23 Python
动画《平凡职业成就世界最强》宣布制作OVA
2022/04/01 日漫