使用if正确更新值

kiz8lqtg  于 2021-09-08  发布在  Java
关注(0)|答案(1)|浏览(249)

我尝试使用以下代码更新给定特定条件的数组的值:

a=[np.inf, 2, 3]

for i in range(0,10):
    a[0] = 100 if a[0] == np.inf else a.append(1)
    print(a)

第一次迭代的效果非常好,每100次都会更改无穷大值。但是,在随后的迭代中,它将数字1相加,但将数组的第一个值更改为 None .

[100, 2, 3] 
[None, 2, 3, 1] 
[None, 2, 3, 1, 1] 
...
[None, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1]

为什么会这样?

tquggr8v

tquggr8v1#

你的线路

a[0] = 100 if a[0] == np.inf else a.append(1)

可以写成

if a[0] == np.inf:
    a[0] = 100
else:
    a[0] = a.append(1)

我相信你能看到那里的问题。如果三元函数选择要使用的值,则不能以您尝试的方式使用它。
我怀疑你是在读它

(a[0] = 100) if a[0] == np.inf else a.append(1)

事实上

a[0] = (100 if a[0] == np.inf else a.append(1))

相关问题