列表与元组,何时使用?

2024-04-19 17:51:08 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中,什么时候应该使用列表,什么时候使用元组?

有时你别无选择,例如

"hello %s you are %s years old" % x

那么x必须是元组。

但是,如果我是设计API并选择数据类型的人,那么指导原则是什么?


Tags: youapihello列表oldare元组数据类型
3条回答

Tuples在本质上是固定大小的,而lists是动态的。
换句话说,atuple是不可变的,而alist是可变的。

  1. 不能向元组添加元素。元组没有append或extend方法。
  2. 不能从元组中移除元素。元组没有remove或pop方法。
  3. 你可以在元组中找到元素,因为这不会改变元组。
  4. 还可以使用in运算符检查元组中是否存在元素。

  • 元组比列表快。如果要定义一个常量值集,并且要做的只是遍历它,请使用元组而不是列表。

  • 如果您“编写保护”不需要更改的数据,它会使您的代码更安全。使用元组而不是列表就像有一个隐含的assert语句,表明该数据是常量,并且需要特殊的思想(和特定的函数)来覆盖它。

  • 有些元组可以用作字典键(特别是包含不可变值的元组,如字符串、数字和其他元组)。列表永远不能用作字典键,因为列表不是不可变的。

来源:Dive into Python 3

有一种很强的元组文化,即用于异构集合的元组,类似于在C中使用structs的元组,以及用于同类集合的列表,类似于用于数组的元组。但我从来没有把这个和其他答案中提到的易变性问题完全对立起来。易变性有它的牙齿(你实际上不能改变一个元组),而同质性是不强制的,所以似乎是一个更不有趣的区别。

我相信(而且我对Python不太熟悉)主要的区别是元组是不可变的(赋值后不能改变它)和列表是可变的(可以追加、更改、减法等)。

所以,我倾向于把作业后不应该改变的东西做成元组,把能改变的东西做成列表。

相关问题 更多 >