列表用于同质数据,元组用于异构数据......为什么?

2024-01-06

我觉得这个问题之前肯定被问过(可能不止一次),所以提前道歉,但我在任何地方都找不到它(在这里或通过谷歌)。

无论如何,在解释Py​​thon中列表和元组之间的区别时,在元组不可变之后提到的第二件事是列表最适合同质数据,而元组最适合异构数据。但似乎没有人愿意解释why就是这样。那么为什么会这样呢?


首先,该指导方针只是有点正确。您可以自由地对同质数据使用元组,对异质数据使用列表,在某些情况下,这样做可能是件好事。一个重要的情况是,如果您需要将集合存储到哈希表中,以便可以将其用作字典键;在这种情况下,您必须使用元组,即使所有元素本质上都是同质的。

另请注意,同质/异质区别实际上与数据的语义有关,而不仅仅是类型。姓名、职业和地址的序列可能被认为是异质的,即使这三者都可以表示为字符串。因此,考虑您将如何处理数据(即,您实际上是否会以相同的方式对待元素)比考虑它们是什么类型更重要。

也就是说,我认为列表更适合同质数据的原因之一是因为它们是可变的。如果您有多个同类事物的列表,则可以在列表中添加另一个事物或删除一个事物;当你这样做时,你仍然会留下一份同类事物的清单。

相比之下,如果您有一组不同种类的事物,通常是因为它们有固定的结构或“模式”(例如,第一个是 ID 号,第二个是名称,第三个是地址, 管他呢)。在这种情况下,从集合中添加或删除元素是没有意义的,因为集合是一个集成的整体,每个元素都有指定的角色。如果不更改元素所代表内容的整个架构,则无法添加元素。

简而言之,同质集合的大小变化比异质集合更自然,因此可变类型对于同质集合更自然。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

列表用于同质数据,元组用于异构数据......为什么? 的相关文章

随机推荐