Pyt*_*ner 4 python variable-length
通常为了节省一些时间,我希望我们在本地函数中使用n = len(s).我很好奇哪个电话更快或者它们是一样的?
while i < len(s):
# do something
Run Code Online (Sandbox Code Playgroud)
VS
while i < n:
# do something
Run Code Online (Sandbox Code Playgroud)
不应该有太大的区别,但是使用len(s),我们需要首先达到s,然后调用s.长度.这是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循环一样容易)
你说得对,这里有一些基准:
s = np.random.rand(100)
n = 100
Run Code Online (Sandbox Code Playgroud)
以上是设置.
%%timeit
50 < len(s)
86.3 ns ± 2.4 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
Run Code Online (Sandbox Code Playgroud)
与:
%%timeit
50 < n
36.8 ns ± 1.15 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
Run Code Online (Sandbox Code Playgroud)
但话说回来,很难想象~60ns水平的差异会影响速度.除非你打电话len(s)数百万次.
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |