python中列表和元组的区别

 更新时间:2017年12月18日 10:24:09   投稿:laozhang  
给大家详细讲解了python中列表和元组的区别,需要的朋友参考一下。

如果有了解过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中的多线程实例教程

    这篇文章主要介绍了python中的多线程用法,包括线程的创建、同步等核心问题,具有很好的参考借鉴价值,需要的朋友可以参考下
    2014-08-08
  • Pandas日期处理之生成工作日与节假日

    Pandas日期处理之生成工作日与节假日

    Python中的Pandas 提供了许多日期处理功能,使得处理时间序列数据变得容易。本文将介绍如何使用 Pandas 生成工作日和节假日,感兴趣的小伙伴可以收藏一下
    2023-05-05
  • Python用 KNN 进行验证码识别的实现方法

    Python用 KNN 进行验证码识别的实现方法

    这篇文章主要介绍了Python用 KNN 进行验证码识别的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-02-02
  • 利用Python编写个有趣的记仇本

    利用Python编写个有趣的记仇本

    这篇文章主要为大家介绍了一个有趣的小案例——利用Python编写个有趣的记仇本,文中的示例代码讲解详细,感兴趣的小伙伴可以尝试一下
    2023-04-04
  • PyTorch 中的傅里叶卷积实现示例

    PyTorch 中的傅里叶卷积实现示例

    这篇文章主要介绍了PyTorch 中的傅里叶卷积实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • python代码实现将列表中重复元素之间的内容全部滤除

    python代码实现将列表中重复元素之间的内容全部滤除

    这篇文章主要介绍了python代码实现将列表中重复元素之间的内容全部滤除,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • python实现发送带附件的邮件代码分享

    python实现发送带附件的邮件代码分享

    在本篇文章里小编给大家整理的是关于python实现发送带附件的邮件代码分享内容,需要的朋友们可以参考下。
    2020-09-09
  • 详解pygame中Rect对象

    详解pygame中Rect对象

    Rect是pygame中的一个创建矩形的对象,它包含一些属性主要是两块:坐标和长宽,Pygame 通过 Rect 对象存储和操作矩形区域,这篇文章主要介绍了pygame中Rect对象,需要的朋友可以参考下
    2022-07-07
  • Python 中@property的用法详解

    Python 中@property的用法详解

    这篇文章主要介绍了Python 中@property的用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Python实现敏感词过滤的4种方法

    Python实现敏感词过滤的4种方法

    这篇文章主要介绍了Python实现敏感词过滤的4种方法,帮助大家处理不和谐的言论,感兴趣的朋友可以了解下
    2020-09-09

最新评论