在Python文档中,列表被定义为:
可变序列,通常用于存储同类项的集合(其精确的相似度将因应用程序而异)。
为什么要使用它来存储同类项的集合?
那么字符串和整数项也是同类项吗?
a = [12,"hello"]
同质化指的是“同种或类似的性质”,请参考该链接。
虽然列表可以存储任何值,但在这样做时,“种类或性质”的定义必须在处理序列时扩大。在此扩大(或“统一”)期间,在序列中可以对每个项目执行的操作集合成为所有项目之间共享的“最低公共操作集合”。
这就是为什么“[列表通常]用于存储同类项的集合”的原因 - 因此可以使用适当程度的统一处理序列中的项:
# 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()]
虽然理论上可以将任何对象存储在列表中:
[12, "hello", list, list()]
正如文档所说,列表通常用于存储类似的项目:
[12, 24, 99]
["hello", "goodbye"]
[list, dict, int]
这段内容讨论了一个常见的用例(因此说“通常”)。正如你提出的问题中所说明的那样,同质化既不是预期的也不是强制执行的。甚至什么意思是“同质化”的定义也没有明确定义:文档表示,这将“根据应用程序而异”。
for i in myList
中的i
提供相同的功能。此外,列表的同质性将由所需的项功能确定。如果唯一要求是str(i)
返回可用的字符串,则可以认为12
和"hello"
是相同的 "类型"。 - chepner