python - 使用 n = len(s) 而不是直接使用 len(s) 是否更快?

标签 python variable-length

通常为了节省一些时间,我希望我们在本地函数中使用 n = len(s)。 我很好奇哪个调用更快或者它们相同?

while i < len(s):
  # do something

对比

while i < n:
  # do something

应该没有太大区别,但是使用len(s),我们需要先到达s,然后调用s.length。这是 O(1) + O(1)。但是使用 n,它是 O(1)。我想是的。

最佳答案

必须更快。

  • 使用 n您正在查看变量(字典)一次。
  • 使用 len(s)您正在寻找两次( len 也是我们必须寻找的功能)。然后调用函数。

也就是说,如果你这样做 while i < n:大多数时候你可以摆脱经典for i in range(len(s)):循环,因为上边界没有改变,并且只在 range 开始时计算一次(这可能会让您想到:为什么我不直接迭代元素或使用 enumerate)

while i < len(s)允许将您的索引与不同的列表进行比较。这就是重点。如果你固定界限,它就会变得不那么有吸引力。

for 中循环,很容易用 continue 跳过增量(很容易忘记增加 i 并以无限的 while 循环结束)

关于python - 使用 n = len(s) 而不是直接使用 len(s) 是否更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53508159/

相关文章:

python - 我什么时候应该写一个类而不是一组函数?

python-3.x - 读取存储在列表中的索引

python - 使用可变长度参数python创建一个函数

python - 插入带有文件特定值的换行符

python - Web/Screen Scraping with Google App Engine - 代码在 python 解释器中工作,但在 GAE 中不工作

python - 可以使用 pypy3 安装所有/大多数 python pip 包吗?

python - 用括号中的数字Python替换字符串中的数字

c - 当内存不足时,如何防止变长数组崩溃?

c - 为什么在 C 中不允许使用 void f(...)?