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
投稿

猜你喜欢

  • Python的bit_length函数来二进制的位数方法

    2022-06-25 00:35:58
  • 使用Python生成XML的方法实例

    2022-10-01 19:20:15
  • Python OpenCV对图像进行模糊处理详解流程

    2022-05-16 03:54:19
  • 将Python的Django框架与认证系统整合的方法

    2022-05-09 20:33:15
  • python中remove函数的踩坑记录

    2022-10-25 18:32:50
  • Win10用vscode打开anaconda环境中的python出错问题的解决

    2023-04-21 09:21:21
  • 基于关系型数据库引擎的\\XML\\索引技术

    2008-09-05 17:13:00
  • python3.7添加dlib模块的方法

    2023-09-16 03:58:55
  • 选择python进行数据分析的理由和优势

    2022-03-31 10:51:01
  • CTF中的PHP特性函数解析之中篇

    2023-06-11 12:56:20
  • Window 64位下python3.6.2环境搭建图文教程

    2023-07-26 02:22:45
  • 用Python实现网易云音乐的数据进行数据清洗和可视化分析

    2023-07-03 18:53:00
  • Python手动或自动协程操作方法解析

    2023-06-30 11:38:41
  • 利用python+ffmpeg合并B站视频及格式转换的实例代码

    2021-06-09 21:14:00
  • 浅析Python中的随机采样和概率分布

    2023-12-11 14:51:11
  • python如何发布自已pip项目的方法步骤

    2023-01-22 01:17:36
  • golang 中signal包的Notify用法说明

    2023-07-19 19:06:36
  • 用asp程序读取网站的alexa世界排名

    2008-11-23 20:43:00
  • 如何避免查询调查结果时出现不相关主题的重复记录?

    2009-11-07 18:42:00
  • Python matplotlib实用绘图技巧汇总

    2023-10-05 01:12:39
  • asp之家 网络编程 m.aspxhome.com