我试图处理生成嵌套元组和平面列表的问题。我想得到这个函数执行的最大迭代次数(niter)。我似乎通过在回拨到初始函数之间使用“and”操作符vs.a“,”解决了这个问题。此外,它的运行速度非常快。有人知道这个逻辑为什么起作用吗?它是否与“and”出现的位置有关?这是一个家庭作业,但我似乎已经回答了
#n_iter should start as zero
def break_it_down(n, n_iter):
if n > 2:
division, subtraction = n/2.0, n-1.0
n_iter +=1
return break_it_down(division,n_iter) and break_it_down(subtraction, n_iter)
return n_iter
原因是
and
是“短循环”。在如果
<expr-1>
的结果是“falsy”(即在逻辑上下文中它被认为是False
),则表达式<expr-2>
将不被计算例如,用
n=8
除法调用(在python2中,当输入是整数时,1/2是0)
而不是减法
值
n=0
是“falsy”,但用除法得到的速度比用减法要快得多。这意味着,如果先用除法检查,然后再用减法检查,则调用的次数将少得多:输入越大,差异就越大(例如256需要256次减法才能得到0,但只有8次除法)
相关问题 更多 >
编程相关推荐