[英]While loop does not stop when the statement is false
我正在嘗試填寫詞典列表。 這個想法是從構建為bestpar = {'V0': 0.01976, 'theta': 0.1330, 'omega': 0.6131, 'kappa': 0.3534, 'rho': -0.8073}
一些字典開始的,並使用此函數迭代地更新它們每次召回從1個創建10個新字典:
def addneighbor(optgrid):
sample_bestpar = bestpar.copy()
neighbor = []
for key in sample_bestpar.keys():
neighbor.append({k : sample_bestpar[k] if k!=key else sample_bestpar[k] + delta[key] for k in sample_bestpar})
neighbor.append({k : sample_bestpar[k] if k!=key else sample_bestpar[k] - delta[key] for k in sample_bestpar})
return neighbor
我要做的是將這些新字典放入列表中,直到列表的長度變為100,然后停止。 顯然,該功能首先應用於最初的字典,然后應用於添加的新字典,依此類推,達到了所需的長度。 做到這一點的代碼如下:
optgrid = [bestpar]
gp = []
gp.extend(optgrid)
while (len(gp) < 100):
for element in optgrid:
newneighbor = addneighbor(element)
gp.extend(newneighbor)
for element in newneighbor:
newnewneighbor = addneighbor(element)
gp.extend(newnewneighbor)
在這種情況下,初始詞典列表僅由一個(bestpar)組成,但是我想調整循環以考慮可能存在更多初始詞典的情況。 不幸的是,while循環似乎不起作用,因為gp的最終長度變為111,因此代碼不會停止。 我做錯了什么?
您只需要在每次通過optgrid
和newneighbor
完整過程之后測試gp
的長度; 大概,該長度在一次這樣的傳遞中從100以下開始,到最后達到111。 如果要在達到100時立即停止,則需要在添加到gp
時測試長度。
break
語句可用於停止循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.