[英]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.