2024-04-19 17:51:08 发布
网友
在Python中,什么时候应该使用列表,什么时候使用元组?
有时你别无选择,例如
"hello %s you are %s years old" % x
那么x必须是元组。
但是,如果我是设计API并选择数据类型的人,那么指导原则是什么?
Tuples在本质上是固定大小的,而lists是动态的。 换句话说,atuple是不可变的,而alist是可变的。
tuple
list
in
元组比列表快。如果要定义一个常量值集,并且要做的只是遍历它,请使用元组而不是列表。
如果您“编写保护”不需要更改的数据,它会使您的代码更安全。使用元组而不是列表就像有一个隐含的assert语句,表明该数据是常量,并且需要特殊的思想(和特定的函数)来覆盖它。
有些元组可以用作字典键(特别是包含不可变值的元组,如字符串、数字和其他元组)。列表永远不能用作字典键,因为列表不是不可变的。
来源:Dive into Python 3
有一种很强的元组文化,即用于异构集合的元组,类似于在C中使用structs的元组,以及用于同类集合的列表,类似于用于数组的元组。但我从来没有把这个和其他答案中提到的易变性问题完全对立起来。易变性有它的牙齿(你实际上不能改变一个元组),而同质性是不强制的,所以似乎是一个更不有趣的区别。
struct
我相信(而且我对Python不太熟悉)主要的区别是元组是不可变的(赋值后不能改变它)和列表是可变的(可以追加、更改、减法等)。
所以,我倾向于把作业后不应该改变的东西做成元组,把能改变的东西做成列表。
Tuples在本质上是固定大小的,而lists是动态的。
换句话说,a
tuple
是不可变的,而alist
是可变的。in
运算符检查元组中是否存在元素。元组比列表快。如果要定义一个常量值集,并且要做的只是遍历它,请使用元组而不是列表。
如果您“编写保护”不需要更改的数据,它会使您的代码更安全。使用元组而不是列表就像有一个隐含的assert语句,表明该数据是常量,并且需要特殊的思想(和特定的函数)来覆盖它。
有些元组可以用作字典键(特别是包含不可变值的元组,如字符串、数字和其他元组)。列表永远不能用作字典键,因为列表不是不可变的。
来源:Dive into Python 3
有一种很强的元组文化,即用于异构集合的元组,类似于在C中使用
struct
s的元组,以及用于同类集合的列表,类似于用于数组的元组。但我从来没有把这个和其他答案中提到的易变性问题完全对立起来。易变性有它的牙齿(你实际上不能改变一个元组),而同质性是不强制的,所以似乎是一个更不有趣的区别。我相信(而且我对Python不太熟悉)主要的区别是元组是不可变的(赋值后不能改变它)和列表是可变的(可以追加、更改、减法等)。
所以,我倾向于把作业后不应该改变的东西做成元组,把能改变的东西做成列表。
相关问题 更多 >
编程相关推荐