我正在尝试遍历列表,而忽略了零值。该列表由浓度值组成,对于这些值,应进行计算。在某些情况下,浓度为零,因此计算将返回错误。我不知道该怎么解决。理想情况下,我想忽略列表中的零。另一种选择是在遇到错误时让计算返回零。我尝试通过尝试解决它,除了。然后它返回了“ RuntimeWarning:除以日志中遇到的零”,我试图用np.errstate行忽略它。运行此命令似乎只返回列表中第一项的一个值。我想要列表中每个项目的值。我对python非常陌生,基本上不知道如何解决此问题。任何帮助,将不胜感激。
def calculate_deltaGr():
deltaG0T = calculate_deltaG0()[0]
deltaGr_list = []
for Con1 in Con1_list:
with np.errstate(divide='ignore'):
try:
deltaGr = deltaG0T + R * T1 * np.log((Con1 ** n_con1) / ((Con2 ** n_con2) * (Con3 ** n_con3) * (Con4 ** n_con4)))
deltaGr_list.append(deltaGr)
except TypeError:
return 0
return deltaGr_list
结果:
[-inf]
仅con1应该是可变的。 Con2,Con3和Con4是固定值
使用简单的if语句将起作用。使用try / except并不是最好的方法。您知道输入可以为零,那么为什么不检查一下呢?如果要将值用作列表中的占位符,则可以返回较大的超出范围的值。
如果您在0时不想做任何事情,请使用continue
for Con1 in Con1_list:
if Con1 == 0: continue