首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用if ternary正确更新值

使用if ternary正确更新值
EN

Stack Overflow用户
提问于 2021-07-09 23:15:40
回答 1查看 34关注 0票数 0

我试图在给定特定条件的情况下更新数组的值,使用以下代码:

代码语言:javascript
复制
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)

firs迭代运行得很好,并且每100次更改无穷大值。但是,在随后的迭代中,它添加数字1,但通过None更改数组的第一个值。

代码语言:javascript
复制
[100, 2, 3] 
[None, 2, 3, 1] 
[None, 2, 3, 1, 1] 
...
[None, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1]

为什么会发生这种情况?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-09 23:20:08

你的产品线

代码语言:javascript
复制
a[0] = 100 if a[0] == np.inf else a.append(1)

可以写成

代码语言:javascript
复制
if a[0] == np.inf:
    a[0] = 100
else:
    a[0] = a.append(1)

我相信你可以看到问题所在。三元函数if选择了一个要使用的值,您不能以您正在尝试的方式使用它。

我怀疑你把它理解为

代码语言:javascript
复制
(a[0] = 100) if a[0] == np.inf else a.append(1)

当它实际上

代码语言:javascript
复制
a[0] = (100 if a[0] == np.inf else a.append(1))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68319105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档