2 回答

TA貢獻1806條經(jīng)驗 獲得超8個贊
假設(shè)conn_list是一個實例列表ConnectionGene。然后你有幾個選擇:
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í)行此操作,最好制作一本參考字典并在那里進行快速查找:
dct = {(c.nodeIn, c.innovationNumber): i for i, c in enumerate(conn_list)}
...
idx = dct[0, 0] # very fast

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