元组/列表之间的区别是什么?它们的优点/缺点是什么?


当前回答

从5.3的文档中引证的方向。元组和序列:

虽然元组可能看起来类似于列表,但它们通常用于不同的情况和不同的目的。元组是不可变的,通常包含不同的元素序列,可以通过解包(参见本节后面的内容)或索引(对于namedtuples,甚至可以通过属性访问)访问这些元素。列表是可变的,它们的元素通常是同构的,并通过遍历列表来访问。

其他回答

PEP 484——类型提示说元组元素的类型可以单独类型化;这样你就可以说Tuple[str, int, float];但是一个带有list类型类的列表只能接受一个类型参数:list [str],这暗示了两者的区别实际上是前者是异构的,而后者本质上是同构的。

此外,标准库通常使用tuple作为这些标准函数的返回值,而C将返回结构体。

列表是可变的。而元组是不可变的。在元组中访问带有索引的偏移量元素比在列表中更有意义,因为元素及其索引不能被更改。

列表是同构序列,而元组是异构数据结构。

列表是可变的;元组不是。

从docs.python.org/2/tutorial/datastructures.html

元组是不可变的,通常包含的异构序列 通过解包访问的元素(参见本节后面的内容) 或者索引(在命名元组的情况下甚至通过属性)。列表 是可变的,它们的元素通常是同质的和 通过遍历列表来访问。

如果你去散步,你可以随时在(x,y)元组中记下你的坐标。

如果你想记录你的旅程,你可以每隔几秒钟将你的位置添加到一个列表中。

但你不能反过来做。