迭代(python)中用一个替换列表中任何出现的零的快速方法

时间:2013-10-02 18:52:11

标签: python

如何将下面列表中的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 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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分区的价值;选择一个对你的问题更有意义的那个。

答案 2 :(得分: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]

答案 3 :(得分:0)

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

for x in _list:
    if x ==0:
        x == 1