如何在忽略零值的同时迭代列表

问题描述 投票:0回答:2

我正在尝试遍历列表,而忽略了零值。该列表由浓度值组成,对于这些值,应进行计算。在某些情况下,浓度为零,因此计算将返回错误。我不知道该怎么解决。理想情况下,我想忽略列表中的零。另一种选择是在遇到错误时让计算返回零。我尝试通过尝试解决它,除了。然后它返回了“ 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是固定值

python list iteration
2个回答
0
投票

使用简单的if语句将起作用。使用try / except并不是最好的方法。您知道输入可以为零,那么为什么不检查一下呢?如果要将值用作列表中的占位符,则可以返回较大的超出范围的值。


0
投票

如果您在0时不想做任何事情,请使用continue

for Con1 in Con1_list:
    if Con1 == 0: continue

© www.soinside.com 2019 - 2024. All rights reserved.