资讯专栏INFORMATION COLUMN

python|列表和元组有什么区别

rubyshen / 3476人阅读

摘要:如果有了解过中的列表和元组,你可能会知道相对于列表,元组是不可变的,也就是说元组中的数据不能随意更改。同时,我们用列表来表示这些位置,如果有新的位置,可以加入列表。

如果有了解过python中的列表和元组,你可能会知道相对于列表,元组是不可变的,也就是说元组中的数据不能随意更改。除了列表是用中括号表示而元组是用小括号表示之外,这两种数据类型好像并没有什么不同,都是用来存放一系列的数据,事实真是如此吗?

a = [1, 3, 5, 7, "a"]

b = (1, 3, 5, 7, "b")

# 现在改变b中的值
b[2] = 4
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

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


本人才疏学浅,上文中难免有些错误,还请各位品评指正。如果觉得写的还行,欢迎关注我的公众号MLGroup,带你走进机器学习的世界。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41078.html

相关文章

  • Java与Python详细对比

    摘要:序列化的这种过程,我们将其称为腌制。而把模块编译成二进制语言程序的这个过程叫做字节编译,这个过程会产生一个与编译的模块对应的文件。 常量: 在Python中常量的使用并不像java等其他编程语言一样有特定的常量实现的关键字,在Python中定义需要用对象的方法来创建。 showImg(https://segmentfault.com/img/bVP6mZ?w=1232&h=703); ...

    tianhang 评论0 收藏0
  • Java与Python详细对比

    摘要:序列化的这种过程,我们将其称为腌制。而把模块编译成二进制语言程序的这个过程叫做字节编译,这个过程会产生一个与编译的模块对应的文件。 常量: 在Python中常量的使用并不像java等其他编程语言一样有特定的常量实现的关键字,在Python中定义需要用对象的方法来创建。 showImg(https://segmentfault.com/img/bVP6mZ?w=1232&h=703); ...

    sydMobile 评论0 收藏0
  • Python 爬虫面试题 170 道:2019 版

    摘要:下面代码会存在什么问题,如何改进一行代码输出之间的所有偶数。简述进程之间如何通信多路复用的作用模型的区别什么是并发和并行解释什么是异步非阻塞的作用面试题说说你知道的命令如何查看某次提交修改的内容答案扫码下面的二维码订阅即可获取。 引言 最近在刷面试题,所以需要看大量的 Python 相关的面试题,从大量的题目中总结了很多的知识,同时也对一些题目进行拓展了,但是在看了网上的大部分面试题不...

    trigkit4 评论0 收藏0
  • 100 个基本 Python 面试问题第二部分(41-60)

    摘要:回到目录评论区抽粉丝送书啦欢迎大家在评论区提出意见和建议抽两位幸运儿送书,实物图如下开发从入门到精通内容简介案例教学。 ? 作者主页:海拥 ? 作者简介:?CSDN...

    Tikitoo 评论0 收藏0
  • 开课吧Python全栈工程师培养计划

    摘要:列表和元组都支持切片操作都可以随意嵌套列表是动态的,长度可变,可以随意的增加删减或改变元素。每行最大长度请限制在个字符全局的类和函数的上方需要空两个空行,而类的函数之间需要空一个空行 03 | 列表和元组,到底用哪一个?列表和元组,都是一个可以放置任意数据类型的有序集合,与其它语言相比较,集合的数据类型不要求一致列表是动态...

    stefan 评论0 收藏0

发表评论

0条评论

rubyshen

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<