python中列表和元组的区别

作者:laozhang 时间:2022-05-21 16:06:00 

如果有了解过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,它用来快速的生成一个类,可以看成是类的轻量级替代方法,也很符合我们上面说的元组的功能。

来源:https://segmentfault.com/a/1190000012463067

标签:python,列表,元组
0
投稿

猜你喜欢

  • MySql节点管理安装步骤

    2010-10-14 14:13:00
  • vue实现某元素吸顶或固定位置显示(监听滚动事件)

    2024-05-09 15:15:10
  • 浅谈Django中的数据库模型类-models.py(一对一的关系)

    2024-01-24 18:32:11
  • numpy中三维数组中加入元素后的位置详解

    2021-02-28 10:25:14
  • python去除所有html标签的方法

    2021-02-23 20:49:00
  • Python实现邮件发送功能的示例详解

    2022-08-18 13:15:43
  • 可用性研究:为文字链接扩大可点击区域

    2008-09-18 18:23:00
  • Go开发Gin项目添加jwt功能实例详解

    2024-04-26 17:31:00
  • SQL2000个人版 应用程序正常初始化失败0乘以C0000135失败

    2024-01-27 05:09:39
  • python实现在IDLE中输入多行的方法

    2023-05-06 19:24:01
  • python中wx将图标显示在右下角的脚本代码

    2022-10-27 02:26:53
  • selenium+opencv实现滑块验证码的登陆

    2022-03-28 06:49:04
  • IE6与IE7的unshift 方法

    2010-01-19 13:59:00
  • PHP基于phpqrcode类库生成二维码过程解析

    2023-11-17 19:06:35
  • python正则表达式实现自动化编程

    2022-01-08 12:24:33
  • sql分类汇总及Select的自增长脚本

    2024-01-22 20:43:34
  • 搭建vue开发环境

    2024-04-09 10:58:27
  • Oracle 数据库连接查询SQL语句

    2009-08-05 20:56:00
  • Python实现PDF转换文本详解

    2022-09-04 13:40:52
  • Innodb中mysql快速删除2T的大表方法示例

    2024-01-22 09:14:21
  • asp之家 网络编程 m.aspxhome.com