Python:如何替换整数数组中所有相同元素?

1 投票
4 回答
7907 浏览
提问于 2025-04-16 13:44

我有一串数字:1,2,3,6,7,8,1,1,1,6,7,5

我想知道怎么把所有的1都换成... 比如说0?

如果是字符串的话,可以用 .replace("1", "0") 这个方法。

4 个回答

1

对于那些很长的列表,但里面只有少量的 1 的情况,下面这种方法在直接修改列表时比简单的循环更有效率:

i = a.index(1)
try:
    while True:
        a[i] = 0
        i = a.index(1, i + 1)
except ValueError:
    pass

不过,这种方法的可读性不如简单的循环,所以只有在性能很重要的时候才使用它。

4

我想提一下,你也可以使用numpy数组,这样的话你可以这样做:

import numpy
a = numpy.array([1,2,3,6,7,8,1,1,1,6,7,5])
numpy.where(a==1,0,a)
9

如果你说的“数组”是指“列表”:

[0 if e == 1 else e for e in a]

这里的 a 就是你的列表。

如果你说的“数组”是指 array.array

array.array('i', [0 if e == 1 else e for e in a])

撰写回答