我需要以最佳方式在列表中进行搜索。基本上,如果列表中的任何元素在Vmin和Vmax之间,并且是一个数字(有时该过程生成的结果不是数字:/),则我需要评估损失(我有一个函数可以执行此操作)。否则,我将蒙受巨大损失,例如10 ** 10。您能帮我优化此搜索吗?我将结构更改为list(),因为它最初是一个元组,并且我不知道如何操作此结构:/
def losses():
Tensoes = list(objeto.get_AllNodeVpu())
Lim = 0
for i in Tensoes:
if (i <= Vmin) or (i >= Vmax):
Lim += 1
if (np.isnan(i) == True):
Lim += 1
if (Lim == 0)
loss = objeto.get_circuit_total_losses()
else:
loss = 10**10
return loss
这是Python吗?您应该然后对其进行标记。
您不在此处进行搜索;您正在处理列表中的每个元素以检查其是否超出范围。
您的列表排序了吗?然后,您只能检查其第一个和最后一个元素。但是,如果您必须对它进行排序-它将比当前的实现更加昂贵。
P.S。您以It's me again
开头,但您的状态显示这是您的第一篇文章:)
附录:好吧,您无需在找到第一个“无效”元素后循环。我不了解Python,但应该类似于:
def losses() :
Tensoes = list(objeto.get_AllNodeVpu())
for i in Tensoes :
if np.isnan(i) == True or i <= Vmin or i >= Vmax :
return 10 * *10
return objeto.get_circuit_total_losses()