gpt4 book ai didi

python - 为什么列表元素查找在 Python 中是 O(1)?

转载 作者:太空狗 更新时间:2023-10-30 00:18:29 24 4
gpt4 key购买 nike

今天在类里面,我们了解到从列表中检索元素在 Python 中是 O(1)。为什么会这样?假设我有一个包含四个项目的列表,例如:

li = ["perry", 1, 23.5, "s"]

这些项目在内存中有不同的大小。因此,不可能将 li[0] 的内存位置加上每个元素大小的三倍以获得 li[3] 的内存位置。那么解释器如何知道 li[3] 在哪里,而不必遍历列表以检索元素?

最佳答案

Python 中的列表是作为指针数组1 实现的。那么,当您创建列表时真正发生了什么:

["perry", 1, 23.5, "s"]

您实际上是在像这样创建一个指针数组:

[0xa3d25342, 0x635423fa, 0xff243546, 0x2545fade]

每个指针“指向”内存中的相应对象,因此字符串 "perry" 将存储在地址 0xa3d25342 和数字 1 将存储在 0x635423fa 等处

由于所有指针的大小都相同,解释器可以实际上将元素大小的 3 倍添加到 li[0] 的地址以到达指针存储在 li[3]


1 从以下位置获取更多详细信息:the horse's mouth (CPython source code on GitHub) .

关于python - 为什么列表元素查找在 Python 中是 O(1)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52693307/

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