为什么Python中的for循环不需要很长时间?

时间:2017-01-15 22:58:05

标签: python numpy for-loop ipython

我在Jupyter笔记本上运行这个小循环

import time

def time_loop(reps):

    start = time.clock()
    count = 0
    for i in range(reps):
        count += 1
    return time.clock() - start

time_loop(10000^100)

无论我作为一个参数输入什么,我似乎总是得到大约0.003的输出

0.0031050000000050204

发生了什么事?

一个猜测是python知道循环的结果只是count = reps,并退出循环?

但如果我改为运行

import time
import numpy as np

def time_loop(reps):

    start = time.clock()
    count = 0
    for i in range(reps):
        count += np.sin(reps)
    return time.clock() - start

time_loop(10000^100)

当我增加参数时,确实需要更长的时间,即使循环的结果仍然非常简单地计数= reps * sin(reps)。

1 个答案:

答案 0 :(得分:1)

^是xor而不是指数:

>>> 10000^100
10100

这是一个很大的数字,但与指数不一样:**,返回:

>>> 10000**100
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

这也需要"而#34;迭代。

python documentation

可以为运营商及其优先级提供一个很好的参考
  

^ - 按位XOR

     

** - Exponentiation