2 回答

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
假設(shè)conn_list是一個(gè)實(shí)例列表ConnectionGene。然后你有幾個(gè)選擇:
idx = None
for i, c in enumerate(conn_list):
if c.nodeIn == 0 and c.innovationNumber == 0:
idx = i
break
或者
idx_list = [i for i, c in enumerate(conn_list) if c.nodeIn == 0 and c.innovationNumber == 0]
或者
idx = next(i for i, c in enumerate(conn_list) if c.nodeIn == 0 and c.innovationNumber == 0)
如果您要多次執(zhí)行此操作,最好制作一本參考字典并在那里進(jìn)行快速查找:
dct = {(c.nodeIn, c.innovationNumber): i for i, c in enumerate(conn_list)}
...
idx = dct[0, 0] # very fast

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
以下是您可以執(zhí)行此操作的一種方法。我不確定您希望在哪里調(diào)用代碼,因此我將在下面將連接稱為“連接”。
indices = [index for index, elem in enumerate(connections) if elem.nodeIn == ___ if elem.innovationNumber == ____]
if indices:
return indices[0]
return -1
只需填空即可。顯然,您可以更改是要返回第一個(gè)索引還是僅返回所有索引。
如果您想檢查 nodeIn 是否與另一個(gè) NodeGene 是同一對(duì)象實(shí)例,您可以使用is代替==。如果您使用的是==,則可以__eq__在 NodeGene 類上定義該方法。
添加回答
舉報(bào)