列表和元组有什么区别?

已发表: 2021-11-28

元组和列表是 Python 中使用的一种数据结构。 列表使用方括号将数据存储在单个变量中,而元组使用括号将数据存储在一个变量中。 这两种结构都用于存储多个值和对象。

本文将深入探讨列表和元组之间的主要区别,并探讨它们的用例。 但首先,让我们快速看一下它们之间的核心相似之处:

  • 您可以在元组和列表中存储所有数据类型的项目和对象。
  • tuple 和 list 都允许使用它们各自的索引来访问数据。
  • 这两种数据类型都可以编译和编目各种数据项。

目录

Python 元组与列表

1. 语法差异

列表和元组的声明在 Python 中总是不同的。 列表使用“[]”方括号声明,而元组声明使用“()”。

这是一个示例,可以更好地理解如何在 Python 中声明列表和元组。

list_num = [7,8,9,10]

tup_num = (10,11,13,14)

打印(列表编号)

打印(tup_num)

这个序列的输出是。

[7,8,9,10]

(10,11,13,14)

在此示例中,定义了一个名为 list_num 的变量,它容纳从 7 到 10 的数字。我们还看到输出包含在方括号中。 但是,定义为 tup_num 并保存从 10 到 14 的数字的变量使用括号显示输出。

Python 使用 type() 函数来帮助我们了解创建的项目的类型。

打印(类型(tup_num))

打印(类型(list_num))

输出:

<类'元组'>

<类'列表'>

2. 可变性(可变 vs 不可变)

元组和列表在可变性方面是矛盾的。 元组是不可变的结构,创建后无法修改或更改。 相反,列表是可变结构,可以在创建后轻松更改或修改。

只有元组可以用作字典的键,因为它们具有不可变的性质。 需要时,列表永远不能用作键。

3. 改变一个对象(List vs Tuple)

让我们找出当尝试对列表进行更改时会发生什么。

名称 = [亚历克斯、瑞克、马丁]

名称 [0] = “roxy”

注意:第一个元素总是被称为 0 而不是 1。

现在让我们看看执行以下命令后的输出:

>>>名称

输出:

[罗克西瑞克马丁]

输出显示列表中的第一项如何更改。

现在让我们看看如果使用元组会产生什么结果。

姓名 = (亚历克斯、瑞克、马丁)

当使用更改元组中的项目时

名称(0)=“roxy”

输出将是:

TypeError:“元组”对象不支持项目分配。

这意味着元组数据结构不支持后来更改的对象。 因此,我们可以得出结论,只能修改列表,不能修改元组。

4. 复制与重用

不能复制元组。 这里的原因是元组的不可变性质。 例如,如果您运行一个元组 (tup_name),您将看到它已恢复到自身。

例子:

名称=('艾伦','siri','Michaela')

复制名称 = 元组(名称)

打印(名称是copyNames)

这里的输出将是—— “真”。

相反,如果您尝试对列表执行相同的操作(如示例所示):

例子:

名称 = [“艾伦”,“siri”“迈克尔拉”]

copyNames = 列表(名称)

打印(名称是copyNames)

输出将显示为“假”。

您必须将完整名称复制并粘贴到新列表中才能获得真正的输出。

5. Python 元组与列表 | 尺寸差异

由于元组的不可变特性,Python 仅以开销相对较低的大块的形式分配元组内存。 对于列表,Python 只提供更小尺寸的内存块。 结果,与列表相比,元组的内存量很小。 然而,这意味着当涉及许多项目时,元组比列表使用起来要快得多。

6. 异构与同质

元组可以存储各种不同类型的元素。 相反,列表可以存储同质的相同变体的特征或数据。

然而,这只是语义上的差异。 例如,列表可以存储各种类型的数据,元组也可以存储相同类型的数据。

例子:

list_elements = ['艾伦',20,'玛丽']

元组元素=('艾伦',“玛丽”,“亚历克斯”)

即使列表包含数字和字符串的组合,代码也将无缝运行。

7. 长度差异

列表和元组的长度和大小也不同。 虽然元组的长度不同,但元组的长度是固定的。 因此,列表的大小可以随时更改,与定义后保持固定的元组的长度不同。

例子:

list_names = ['艾伦','玛丽','亚历克斯']

list_names.append(“roxy”)

打印(列表名称)

输出:

['艾伦','玛丽','亚历克斯','roxy']

当涉及列表时,也可以使用 insert() 函数而不是 append() 函数来实现确切的输出。

然而,元组数据结构并没有为我们提供任何改变其大小的方法。

8.用例

在不同的情况下,这些数据结构中至少有一个运行良好。 它通常取决于使用哪种数据结构的程序的编码器。 数据结构的选择基于数据项将来是否会被重写。

与列表相比,元组作为数据结构更为重要,因为:

  • 使用元组而不是列表可以通知编码器或数据解释器不要更改信息。
  • 您还可以使用元组在没有键的情况下恢复数据。
  • 元组相当于 Python 中的字典。
  • 存储在列表中的元组非常容易阅读。

元组的不可变和可散列特性使它们成为字典的完美替代品。 另一方面,您不能使用列表来替换字典,因为它们不支持 _hash_() 函数。

例子:

key_val= {('alex', 'brave'):124} #有效

key_val = {['alex', 'brave']:124} #无效

9. 嵌套列表和元组

元组和列表可以相互存储。 嵌套的元组可以容纳更多的元组。 同样,嵌套列表也可以有更多列表。

10. 调试

与列表相比,元组在更广泛的项目中更容易调试。 这是因为元组的不可变特性。 但是,当涉及的数据量要少得多时,总是建议依赖列表。 元组也更容易跟踪,因为它们无法更改,这与列表不同,列表中的错误很难跟踪。

11. 功能与操作

Python 有一些有益的函数可以应用于元组和列表,例如 sorted、sum、all、min、max、lean 等。

当涉及操作时,人们可能会在列表和元组中发现许多相似之处。 但是,列表具有一些元组中没有的额外功能。 这些主要是弹出和插入操作,以及删除和存储项目。

关键要点

  • 元组的功能比列表少。
  • 元组的结构是不可变的,而列表的结构是可变的。
  • 元组的长度是固定的,而列表的长度可以变化。
  • 列表的语法用“[]”方括号表示,而元组的语法用“()”括号的形式表示。
  • 与列表相比,元组消耗的内存更少。
  • 当涉及到访问元素时,元组数据结构是最好的。
  • 函数列表更擅长执行特定的删除和插入操作。
  • 涉及元组的迭代比涉及列表的迭代快。
  • 列表可能有多个构建方法,而元组没有。

通过 upGrad 为期 18 个月的数据科学理学硕士课程,详细了解 Python 的精髓及其高级概念 与利物浦约翰摩尔斯大学和 IIIT 班加罗尔合作的项目。 借助行业领先的师资力量、500 多个小时的学习材料和疑难解答课程,学生有机会掌握 Python 和其他数据科学基础知识,从而相应地引导他们的职业生涯。 此外,该计划有助于培养超过 14 种语言和工具的能力,如 Tableau、MySQL、Excel、MongoDB 等。

所以,不要犹豫。 今天就联系我们吧!

何时使用元组或列表?

如果你需要你的数据项是只读的,那么你应该使用元组。 元组中的数据保持不变,因为它们保证了永不更改的数据的可用性。

然而,列表是非常可变的。 因此,它们中的数据总是可以更改的。 在列表中移动、切换、删除和添加项目非常灵活。 当数据需要在程序周期的后期阶段进行修改时,最好使用它们。

与列表相比,元组更快吗?

是的,创建一个元组比创建一个列表花费的时间要少得多。 制作列表时,需要访问多个内存块。 这是因为元组中的元素不能被删除和替换,而列表中的特征可以在程序周期中多次更改。

元组和列表在现实生活中在哪里使用?

可以制作一个列表来存储使用特定食谱烹饪特定菜肴所需的步骤。 该列表涉及对数据的顺序访问。 因此,可以按顺序访问这些步骤。 另一方面,元组可用于存储您居住地的经度或纬度等数据。 这是因为元组是预定义数据的集合。 您还可以使用相同的元组来存储其他地方的位置坐标。