使用 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))
我正在尝试更新给定特定条件的数组的值,使用此代码:
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))