我有一個簡單的問題,我似乎無法實作。我在 python 中有一個 for 回圈,在一個圖元串列上迭代并輸出一個圖元串列。我想做的就是將輸出的圖元串列傳遞給上述的for回圈,并持續進行若干次(由我決定)。
因此,我有一個種群中的個體集合,稱為gen1。它看起來像這樣:
一代1人口是[(214, 66, 229, 87, 259)。) (256,11,249,75。242),(247,41。206, 4, 194)。) (214, 61, 172, 59, 225),(270,78。238, 69, 261)。) (235, 22, 175, 31, 213),(272,37。222, 80, 222)。) (233, 70, 207, 33, 218),(227, 38, 244, 47, 229)。) (264, 76, 246, 52, 239),(273, 2, 201, 10, 273)。) (215,85,205。4, 199),(268。9, 235, 51, 195)。) (236, 53, 198, 43, 273),(224。27, 212, 29, 236),(275,64。190, 62, 257)。) (226,23,178,44。202),(219,19。196, 8, 227)。) (227, 60, 238, 15, 213),(216,62。185, 73, 192)]
現在,我寫了一個for回圈,如下所示:
for Po in gen1:
*做一些操作,包括交叉操作*。
Ouptput gen2
我相信這類似于python中的遞回函式,但我不想寫一個函式,而只想用自己的輸出多次更新for回圈。如何實作這一點?
uj5u.com熱心網友回復:
我的意思是你可以直接用for回圈包住它:
n = ... # insert the number of generations[/span]。
for i in range(n)。
print(f" generation {i}:")
for Po in current_generation:
*做一些操作,包括交叉*。
所以在回圈之后,當前世代是更新的世代(因為你已經更新了該陣列中的值)。如果你不確定世代的數量,你也可以使用while True:回圈,一旦達到一定的閾值,中斷,或者你打算用這個做什么?
uj5u.com熱心網友回復:
簡短的回答,使用遞回,這將會更容易。
def recur(param, curr_depth=0, max_recur=20)。)
if(curr_depth >= max_recur or curr_depth > 900) 。##最大深度。
return param
else:
##做一些事情。
pass: ## do something.
##列印輸出。
pass ## print output
return recur(param, curr_depth 1, max_recur)
否則,如果你絕對需要它不使用遞回,那么使用while回圈而不是for,因為for回圈不能在執行程序中改變。
def fun(initial, max_depth=20)。
完成 = False: 完成 = False.
代號=初始
深度=0
while(not finished)。
for f in generation:
pass
#分配新的結果。
代號 = []
if(depth > max_depth or True) 。##某種條件表明你已經完成了。
finished = True: ##某個條件表明你已經完成了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/319325.html
標籤:
上一篇:為什么在C語言中基于堆疊的迭代沒有比遞回表現得更好?(以斐波那契數為例)
下一篇:不能在類內使用一個方法
