len(array)如何在引擎盖下工作

2024-09-27 04:30:15 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,采取一个数组:

x = [1,2,3,4]

调用时python如何获得这个数组的长度

len(x)

乍一看,一个明显的解决方案似乎是,它遍历数组并递增一个计数器,然后说“嘿,数组的长度是4!” 但是如果您已经定义了一个数组,那么这似乎是非常低效的。我相信,如果我错了,请纠正我,python在初始化数组时已经必须为数组中的每个元素分配内存,这向我表明,它已经在赋值时遍历了该区域。如果是这样的话,那么计算数组的长度并将其分配给内存,直到销毁数组的实例,这似乎是一个明智的想法。所以当你调用len(x)时,它实际上只是指向内存,而不是遍历数组。你知道吗

我想知道len()方法的行为是否与我上面描述的更相似,或者它是否每次被调用时都遍历数组,或者是完全不同的东西。你知道吗

另外,如果每次调用数组时它都遍历数组,那么可能有人有一个很酷的技巧,在初始化数组时存储数组的长度,而不是在调用len(x)时再次遍历数组。你知道吗

这主要是一个好奇的问题。假设答案是,每次调用len时都会迭代数组,对于为什么会这样以及为什么调用自己的方法是个坏主意的解释也会非常感激。信息越多越好!你知道吗


Tags: 实例方法内存答案区域元素技巧len
1条回答
网友
1楼 · 发布于 2024-09-27 04:30:15

Python文档是pretty clear here(我的突出显示):

Python's lists are really variable-length arrays, not Lisp-style linked lists. The implementation uses a contiguous array of references to other objects, and keeps a pointer to this array and the array's length in a list head structure.

注意python3的FAQhas the identical text。你知道吗

相关问题 更多 >

    热门问题