Python 列出成员资格检查与循环性能检查
与此职位相关: 在计时执行时,test1()的速度至少是test2()的两倍。test2()中的行数较少。是因为这个吗?除此之外,这也是一种蟒蛇式的做事方式。“in”是否比类似的循环结构更有效?出于性能原因,“in”是否应该优先于列表和dict检查的循环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
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列表,时间差非常小,因此您可以自由使用任何一种形式