gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 03:16:47 29 4
gpt4 key购买 nike

我看到了与特定编程语言相关的现有问题。具体语言存在实现差异,但是否存在理论上的概念差异?

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

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

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

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

维基百科说“元组是元素的有限有序列表。”。

这清楚地表明元组是一个列表,但是一个有限列表。

最佳答案

从 C# 的角度来看,最明显的区别是元组在其存在期间的长度是固定的,而列表支持添加和删除功能,这可能会导致其长度发生变化。

您可能会争辩说这只是一个任意的实现决定,但这又导致了可变性问题。假设我有一个 Tuple<double, double>表示一个二维点。如果我删除其中一个元素,那么我就有 Tuple<double> ,很明显,这不再是一个 2D 点,甚至剩余维度的原始含义也可能不再相关或可用。

但是,如果我有一个 List<double>代表 2 个学生的分数,删除一个,我现在有一个 1 个学生的分数列表。但是剩下的一个 double 仍然是一个分数,并且仍然保留了分数的全部含义/相关性。

简而言之,我将 Tuple 元素视为属性或维度(通常是最低要求的定义集),而我将 List 元素视为任意实例。

关于list - 列表和元组之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30518013/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com