1

如何将下面列表中的 0 值替换为 1,以避免除法错误?

_list=[0,1,2,3]
n=[]
for x in _list:
    if x ==0:
        print 1
    else:
        div=2.0/x
        n.append(div)

我希望新值 (1) 参与除法。有什么建议么?谢谢。

4

4 回答 4

2

你几乎明白了。问题是您只是print使用 1,而不是使用它来代替 0。所以:

_list=[0,1,2,3]
n=[]
for x in _list:
    if x ==0:
        x=1
    div=x/2.0
    n.append(div)
于 2013-10-02T19:02:18.837 回答
1
_list=[0,1,2,3]
print [num/2.0 if num else 0.5 for num in _list]

输出

[0.5, 0.5, 1.0, 1.5]
于 2013-10-02T19:00:48.683 回答
1

这个怎么样:

[x/2.0 if x else None for x in _list]
=> [None, 0.5, 1.0, 1.5]

上面的列表推导将返回一个包含划分的列表,None其中包含0/2划分发生的位置。或这个:

[x/2.0 for x in _list if x]
=> [0.5, 1.0, 1.5]

以上避免了0/2除法的价值;选择对您的问题更有意义的一个。

于 2013-10-02T18:54:25.927 回答
0

如果您只想在 _list 中将 0 替换为 1,那么您需要做的就是更改 if 语句。而不是 if x == 0: print 1,您需要:

for x in _list:
    if x ==0:
        x == 1
于 2013-10-02T19:07:50.593 回答