小编mik*_*39x的帖子

在python 2中的`范围'构造---工作太慢

我想检查一下给定的是否在x这段时间内[0,a-1].作为一个懒惰的程序员,我写道

x in range(a)
Run Code Online (Sandbox Code Playgroud)

(因为那段代码在4.5嵌套循环中)很快就会遇到性能问题.我测试了它,事实上,它证明了n in range(n)O(n)中的谎言的运行时间,给予或接受.我实际上认为我的代码会被优化,x >= 0 and x < a但似乎并非如此.即使我range(a)事先修好了,时间也不会变得不变(虽然它会有很大改善) - 请参阅附注.

所以,我的问题是:

我应该使用x >= 0 and x < a而且永远不要再写x in range(a)了吗?有没有更好的写作方式?


附注:

  1. 我试着搜索范围,python-2.7,性能标签放在一起,什么都没找到(与python-2.x相同).
  2. 如果我尝试以下:

    i = range(a)
    ...
    x in i
    
    Run Code Online (Sandbox Code Playgroud)

    所以范围是固定的,我只测量运行时间x in i,我仍然在O(x)中得到运行时(假设a足够大).

  3. n in xrange(n)O(n)中的运行时间也是如此.
  4. 我找到了这篇文章,它问python 3的类似问题.我决定在python 3上测试相同的东西,它通过测试就像没什么.我为python 2感到难过.

python performance range overhead python-2.7

5
推荐指数
1
解决办法
175
查看次数

标签 统计

overhead ×1

performance ×1

python ×1

python-2.7 ×1

range ×1