簡體   English   中英

在while循環中使用枚舉函數

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

我想計算算法通過循環得到ab的次數 但是這不是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM