使用 if 三元正确更新值

Update values correctly using if ternary

我正在尝试更新给定特定条件的数组的值,使用此代码:

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]

为什么会这样?

你的线路

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)

我相信您可以在那里看到问题。三元 if 选择要使用的值,您不能按照您尝试的方式使用它。

我怀疑你读的是

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

实际上

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