Python列表文档中的“homogenous”是什么意思?

10

在Python文档中,列表被定义为:

可变序列,通常用于存储同类项的集合(其精确的相似度将因应用程序而异)。

为什么要使用它来存储同类项的集合?

那么字符串和整数项也是同类项吗?

a = [12,"hello"]

这是字典中的术语:“相同类型的”。 - user2864740
6
用词奇怪。我唯一能看到的同质性就是它们都是Python对象。 - wim
1
通常使用。列表的最常见用途是迭代它,因此预期每个 for i in myList 中的 i 提供相同的功能。此外,列表的同质性将由所需的项功能确定。如果唯一要求是 str(i) 返回可用的字符串,则可以认为 12"hello" 是相同的 "类型"。 - chepner
3个回答

12

同质化指的是“同种或类似的性质”,请参考该链接

虽然列表可以存储任何值,但在这样做时,“种类或性质”的定义必须在处理序列时扩大。在此扩大(或“统一”)期间,在序列中可以对每个项目执行的操作集合成为所有项目之间共享的“最低公共操作集合”。

这就是为什么“[列表通常]用于存储同类项的集合”的原因 - 因此可以使用适当程度的统一处理序列中的项:

# a list of animals that can "speak"
animals = [Dog(), Cat(), Turkey()]
for a in animals:
  a.speak()

# .. but a string cannot "speak"
animals = [Dog(), "Meow!", Turkey()]

2

虽然理论上可以将任何对象存储在列表中:

[12, "hello", list, list()]

正如文档所说,列表通常用于存储类似的项目:

[12, 24, 99]
["hello", "goodbye"]
[list, dict, int]

“homogenous”的意思就是“相似的”。

2

这段内容讨论了一个常见的用例(因此说“通常”)。正如你提出的问题中所说明的那样,同质化既不是预期的也不是强制执行的。甚至什么意思是“同质化”的定义也没有明确定义:文档表示,这将“根据应用程序而异”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接