我有几种使用迭代来搜索正确答案的数学算法。这是一个例子:
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
循环中的迭代次数,然后我可以将其用于其他情况。
最佳答案
如果您在 for
循环之外需要一个计数器,最简单的答案是使用一个简单的变量手动计数并在 while
循环内添加:
count = 0
while condition:
...
count += 1
还有另一种情况 - 如果迭代的每个步骤对 yield
都有有意义的值,您可能希望循环是 generator ,然后使用 for
循环和 enumerate()
。这在您关心您正在进行的步骤时最有意义,而不仅仅是最后的计数。例如:
def produce_steps():
while condition:
...
yield step_value
for count, step_value in enumerate(produce_steps()):
...
关于python - 在 while 循环中使用枚举函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29576733/