通常为了节省一些时间,我希望我们在本地函数中使用 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/