[英]Using enumerate function in while loops
我有几个使用迭代来搜索正确答案的数学算法。 这是一个例子:
def Bolzano(fonction, a, b, tol=0.000001):
while abs(b - a) > tol:
m = (a + b) / 2
if sign(fonction(m)) == sign(fonction(a)):
a = m
else:
b = m
return a, b
我想计算算法通过循环得到a和b的次数 。 但是这不是for
函数而且它不是列表,所以如果我使用enumerate
,我无法清楚地指出我想要计算的对象。 有没有办法计算这些循环?
注意:我不是要尝试更改代码本身。 我正在寻找一种在while
循环中计算迭代的方法,然后我可以将其用于其他情况。
对于计数器,我使用来自itertools
count
:
from itertools import count
c = count(1)
>>>next(c)
1
>>>next(c)
2
等等...
句法
count(start=0, step=1)
文件
创建一个迭代器,返回以数字start开头的均匀间隔值。
参考。 itertools.count
如果你需要一个for
循环之外的计数器,最简单的答案是使用一个简单的变量手动计数并在你的while
循环中添加:
count = 0
while condition:
...
count += 1
还有另一种情况 - 如果迭代的每一步都有一个有意义的yield
值,你可能希望你的循环是一个生成器 ,然后使用for
循环和enumerate()
。 在你关心自己走向哪一步,而不仅仅是最后的计数时,这是最有意义的。 例如:
def produce_steps():
while condition:
...
yield step_value
for count, step_value in enumerate(produce_steps()):
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.