如果有了解过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中列表和元组的使用方法和区别详解的使用技巧和注意事项,需要的朋友参考一下 一、二者区别 列表: 1.可以增加列表内容 append 2.可以统计某个列表段在整个列表中出现的次数 count 3.可以插入一个字符串,并把整个字符串的每个字母拆分当作一个列表段追加到列表当中 extedn 4.可以查询某个列表段在整个列表的位
问题内容: 有什么不同? 元组/列表的优点/缺点是什么? 问题答案: 除了元组是不可变的之外,还应有语义上的区别来指导它们的用法。元组是异构数据结构(即,它们的条目具有不同的含义),而列表是同类序列。元组具有结构,列表具有顺序。 使用这种区别可以使代码更加明确和易于理解。 一个示例是成对的页和行号,以成对参考书中的位置,例如: 然后,您可以将其用作字典中的键来存储有关位置的注释。另一方面,列表可用
本文向大家介绍Python分组的元组列表求和,包括了Python分组的元组列表求和的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将编写一个程序,该程序将具有相同键的所有值添加到不同列表中。让我们看一个例子来清楚地理解它。 输入值 输出结果 请按照给定的步骤解决问题。 初始化列表。 使用dict将第一个列表转换为字典并将其存储在变量中。 遍历第二个列表,并将相应的值添加到字典中存在的键中
问题内容: 有什么不同? 元组/列表的优点/缺点是什么? 问题答案: 除了元组是不可变的之外,还应有语义上的区别来指导它们的使用。元组是异构数据结构(即,它们的条目具有不同的含义),而列表是同类序列。元组具有结构,列表具有顺序。 使用这种区别可以使代码更加明确和易于理解。 一个示例是成对的页和行号,以指向一本书中的参考位置,例如: 然后,您可以将其用作字典中的键来存储有关位置的注释。另一方面,列表
问题内容: 我有一个这样的元组列表: 而且我需要将所有元组的交集合并起来。 那就是相交的元组是迭代地联合的。 我试图将元组转换为集合,然后采用交集,但没有用。任何想法? 问题答案: 这是网络问题,使用