列表和元组之间有区别吗?

cla*_*lay 5 theory tuples list

我看到与特定编程语言相关的现有问题.特定语言存在实施差异,但是存在理论上的概念差异吗?

Mutable vs immutable:在Python中,列表是完全可变的,而元组是不可变的或持久不可变的,因此修改创建新的元组并且不进行就地修改.但这纯粹是一个实现细节.在其他语言中,元组是可变的,列表是不可变的.

异构与同构:从语义上讲,元组通常是异构的,而列表通常是同构的,但这更像是一种约定,并且有很多例外.像Python这样的动态类型语言具有异构列表.例如,Haskell支持称为HList的完全静态类型的异构列表.

有限与无限:从理论上讲,列表可以是无限的,一些编程语言(Haskell)支持无限列表.元组不可能是无限的.

更新:唯一的理论差异是元组必须是有限的,而列表理论上可以是无限的.其余的差异是纯粹的实现差异.

维基百科说"元组是一个有限的有序元素列表."

这清楚地表明元组是一个列表,而是一个有限列表.

cla*_*lay 0

元组只是一个有限列表。所有元组都是列表。所有有限列表都是元组。无限列表不是元组。类型和语义的所有差异纯粹是语言相关的考虑因素。