在Python数组中使用逻辑“或”进行条件索引

0 投票
2 回答
856 浏览
提问于 2025-04-18 11:54

我想要改变数组中一些元素的值。比如说,我希望所有值为 123 的元素都变成 1

我该怎么用“或”这个操作符来实现呢?或者有没有其他的操作符可以达到我的目的。我试过下面的代码,还有一些其他的方式,但都没有得到我想要的结果:

samples = [1,2,3,4,5,6,7,8]
print samples
samples[samples == 1 or samples == 2 or samples == 3] = 1
print samples

我需要的输出是:

[1,1,1,4,5,6,7,8]

2 个回答

1

这是一个使用 or 的例子;如果你不是在进行代码高尔夫比赛,这个方法并没有比被接受的答案更好 :)

samples = [int(i in (1, 2, 3)) or i for i in samples]

这个方法利用了一个特点,那就是 int(True) 会返回 1

4

使用 列表推导式 来生成一个新的列表:

samples = [1 if i in (1, 2, 3) else i for i in samples]

这里用到了 条件表达式,可以在 1 和原始值之间进行选择。

撰写回答