Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列出成员资格检查与循环性能检查_Python_Performance - Fatal编程技术网

Python 列出成员资格检查与循环性能检查

Python 列出成员资格检查与循环性能检查,python,performance,Python,Performance,与此职位相关: 在计时执行时,test1()的速度至少是test2()的两倍。test2()中的行数较少。是因为这个吗?除此之外,这也是一种蟒蛇式的做事方式。“in”是否比类似的循环结构更有效?出于性能原因,“in”是否应该优先于列表和dict检查的循环 import timeit a=[n表示范围(11000)内的n] s=a[len(a)-1] def test1(): 对于我来说,在一个: 如果i==s: 打破 def test2(): 如果是在a中: 通过 如果uuuu name uuu

与此职位相关:

在计时执行时,test1()的速度至少是test2()的两倍。test2()中的行数较少。是因为这个吗?除此之外,这也是一种蟒蛇式的做事方式。“in”是否比类似的循环结构更有效?出于性能原因,“in”是否应该优先于列表和dict检查的循环

import timeit
a=[n表示范围(11000)内的n]
s=a[len(a)-1]
def test1():
对于我来说,在一个:
如果i==s:
打破
def test2():
如果是在a中:
通过
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
n=10000
打印(“test1毫秒/循环:”,timeit.timeit(“test1()”,
setup=“从主导入测试1”,编号=n)/n*1000)
打印(“每个循环测试2毫秒:”,timeit.timeit(“测试2()”,
setup=“从主导入测试2”,编号=n)/n*1000)

这两个循环执行的代码本质上是完全相同的,但有一个主要区别:中的
将循环推到了C级别(假设为CPython),而第二个循环显然是Python

显然,C的执行速度比Python快,这给了您性能上的差异。通常,如果您只想检查成员身份(
True
False
),请使用第一个选项,但如果您想执行更复杂的操作,例如获取索引(使用带有
枚举的循环)并执行进一步的操作,请使用第二个选项。对于较小的ish列表,时间差非常小,因此您可以自由使用任何一种形式