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装饰器decorator介绍
Nov 21 Python
Django1.7+python 2.78+pycharm配置mysql数据库
Oct 09 Python
python爬虫中get和post方法介绍以及cookie作用
Feb 08 Python
python匹配两个短语之间的字符实例
Dec 25 Python
Pycharm如何打断点的方法步骤
Jun 13 Python
Win10系统下安装labelme及json文件批量转化方法
Jul 30 Python
Django框架 querySet功能解析
Sep 04 Python
Django自关联实现多级联动查询实例
May 19 Python
keras 解决加载lstm+crf模型出错的问题
Jun 10 Python
Python生成器generator原理及用法解析
Jul 20 Python
python爬取微博评论的实例讲解
Jan 15 Python
一篇文章带你了解Python和Java的正则表达式对比
Sep 15 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 cookie 作用范围?不要在当前页面使用你的cookie
2009/03/24 PHP
PHP中include与require使用方法区别详解
2013/10/19 PHP
PHP输出缓存ob系列函数详解
2014/03/11 PHP
PHP捕获Fatal error错误的方法
2014/06/11 PHP
PHP设置images目录不充许http访问的方法
2016/11/01 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
2016/11/16 PHP
PHP判断密码强度的方法详解
2017/05/26 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
2018/04/08 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
2019/02/13 PHP
Laravel validate error处理,ajax,json示例
2019/10/25 PHP
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
onbeforeunload与onunload事件异同点总结
2013/06/24 Javascript
JS 添加千分位与去掉千分位的示例
2013/07/11 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
2013/08/28 Javascript
jquery实现对联广告的方法
2015/02/05 Javascript
JavaScript的ExtJS框架中表格的编写教程
2016/05/21 Javascript
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
jQuery实现表单动态添加与删除数据操作示例
2018/07/03 jQuery
vue中使用protobuf的过程记录
2018/10/26 Javascript
在element-ui的select下拉框加上滚动加载
2019/04/18 Javascript
Python备份Mysql脚本
2008/08/11 Python
利用python获得时间的实例说明
2013/03/25 Python
实例解析Python中的__new__特殊方法
2016/06/02 Python
获取python文件扩展名和文件名方法
2018/02/02 Python
Python实现处理逆波兰表达式示例
2018/07/30 Python
python K近邻算法的kd树实现
2018/09/06 Python
美国演唱会订票网站:Ticketmaster美国
2017/10/05 全球购物
黄色火烈鸟:De Gele Flamingo
2019/03/18 全球购物
网站域名和主机:Domain.com
2019/04/01 全球购物
TOWER London官网:鞋子、靴子、运动鞋等
2019/07/14 全球购物
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
产品销售计划书
2014/05/04 职场文书
硕士研究生就业推荐信
2014/05/18 职场文书
如何写辞职书
2015/02/26 职场文书
Python OpenCV形态学运算示例详解
2022/04/07 Python
clear 万能清除浮动(clearfix:after)
2023/05/21 HTML / CSS