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服务器健康状况的小程序
Sep 17 Python
Python open()文件处理使用介绍
Nov 30 Python
Python IDLE入门简介
Dec 08 Python
python3的输入方式及多组输入方法
Oct 17 Python
python 对类的成员函数开启线程的方法
Jan 22 Python
简单了解python单例模式的几种写法
Jul 01 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
Aug 15 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
Mar 10 Python
解决Python安装cryptography报错问题
Sep 03 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
Oct 15 Python
python 基于wx实现音乐播放
Nov 24 Python
Python Pandas pandas.read_sql函数实例用法
Jun 21 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之正则表达式捕获组与非捕获组(详解)
2015/07/29 PHP
学习php设计模式 php实现访问者模式(Visitor)
2015/12/07 PHP
Thinkphp3.2.3分页使用实例解析
2016/07/28 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
2016/11/05 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
PHP CURL使用详解
2019/03/21 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
2019/04/02 PHP
JavaScript中的Array对象使用说明
2011/01/17 Javascript
js中eval详解
2012/03/30 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
2015/02/16 Javascript
jQuery移动web开发之页面跳转和加载外部页面的实现
2015/12/04 Javascript
js发送短信倒计时的简单实现方法
2016/09/08 Javascript
JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法
2017/01/20 Javascript
vue项目优化之通过keep-alive数据缓存的方法
2017/12/11 Javascript
Swiper自定义分页器使用详解
2017/12/28 Javascript
基于JavaScript实现幸运抽奖页面
2020/07/05 Javascript
vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量)
2018/04/20 Javascript
Vue实现滑动拼图验证码功能
2019/09/15 Javascript
[04:40]2016个国际邀请赛中国区预选赛场地——华西村观战指南
2016/06/25 DOTA
Python切片用法实例教程
2014/09/08 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
2018/04/10 Python
Python+AutoIt实现界面工具开发过程详解
2019/08/07 Python
Python  Django 母版和继承解析
2019/08/09 Python
python中68个内置函数的总结与介绍
2020/02/24 Python
python编写一个会算账的脚本的示例代码
2020/06/02 Python
Python通过Schema实现数据验证方式
2020/11/12 Python
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
彪马法国官网:PUMA法国
2019/12/15 全球购物
公司业务主管岗位职责
2013/12/07 职场文书
企业总经理职责
2014/02/02 职场文书
2014年客房部工作总结
2014/11/22 职场文书
世界气象日活动总结
2015/02/27 职场文书
2015年清明节演讲稿范文
2015/03/17 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
新农村建设指导员工作总结
2015/08/13 职场文书
利用Python多线程实现图片下载器
2022/03/25 Python