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创建一个最简单http webserver服务器的方法
May 08 Python
Python实现按特定格式对文件进行读写的方法示例
Nov 30 Python
Python英文文本分词(无空格)模块wordninja的使用实例
Feb 20 Python
Python3简单爬虫抓取网页图片代码实例
Aug 26 Python
python ffmpeg任意提取视频帧的方法
Feb 21 Python
python随机模块random的22种函数(小结)
May 15 Python
keras小技巧——获取某一个网络层的输出方式
May 23 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
Oct 15 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
Feb 07 Python
Python基础之字符串格式化详解
Apr 21 Python
Flask搭建一个API服务器的步骤
May 28 Python
OpenCV图像变换之傅里叶变换的一些应用
Jul 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
全国FM电台频率大全 - 8 黑龙江省
2020/03/11 无线电
SONY ICF-SW55的电路分析
2021/03/02 无线电
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
2013/05/08 PHP
PHP中CheckBox多选框上传失败的代码写法
2017/02/13 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
2017/11/25 PHP
Javascript 的addEventListener()及attachEvent()区别分析
2009/05/21 Javascript
DOM 脚本编程中的兄弟节点
2009/10/31 Javascript
JQuery入门——事件切换之toggle()方法应用介绍
2013/02/05 Javascript
使用js dom和jquery分别实现简单增删改
2014/09/11 Javascript
JavaScript实现动态添加,删除行的方法实例详解
2015/07/02 Javascript
基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
2016/10/30 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
JS排序之快速排序详解
2017/04/08 Javascript
详解如何用webpack4从零开始构建react开发环境
2019/01/27 Javascript
JQuery常见节点操作实例分析
2019/05/15 jQuery
vue2.0+SVG实现音乐播放圆形进度条组件
2019/09/21 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
使用js和canvas实现时钟效果
2020/09/08 Javascript
如何在Vue项目中添加接口监听遮罩
2021/01/25 Vue.js
[01:24]2014DOTA2 TI第二日 YYF表示这届谁赢都有可能
2014/07/11 DOTA
[41:12]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
Python线程详解
2015/06/24 Python
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
基于python 字符编码的理解
2017/09/02 Python
tensorflow: 查看 tensor详细数值方法
2018/06/13 Python
谈谈Python中的while循环语句
2019/03/10 Python
Python跳出多重循环的方法示例
2019/07/03 Python
PyCharm2019安装教程及其使用(图文教程)
2019/09/29 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
2020/05/22 Python
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
英国露营设备和户外服装购物网站:Simply Hike
2019/05/05 全球购物
Omio英国:搜索并比较便宜的巴士、火车和飞机
2019/08/27 全球购物
房地产销售员的自我评价分享
2013/12/04 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
html中显示特殊符号(附带特殊字符对应表)
2021/06/21 HTML / CSS
python库sklearn常用操作
2021/08/23 Python