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

时间:2011-03-15 15:26:23

标签: python

我有1,2,3,6,7,8,1,1,1,6,7,5

将所有1替换为...说.. 0?

的语法是什么

表示字符串的.replace(“1”,“0”)

4 个答案:

答案 0 :(得分:9)

如果用“array”表示“list”:

[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])

答案 1 :(得分: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)

答案 2 :(得分:1)

对于仅出现少量1的大型列表,以下内容比原始for循环更有效地更改列表:

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

这也不如天真的for-loop那么可读,所以只有在性能很重要时才使用它。

答案 3 :(得分:0)

如果您的“数组”是“列表”,您可以执行列表理解:

x = [1,2,3,6,7,8,1,1,1,6,7,5]
x = [item if item != 1 else 0 for item in x]

这当然会创建一个新列表。如果您的列表非常大并且您不想创建新列表,则可以执行此操作:

for i, item in enumerate(x):
    if item == 1:
        x[i] = 0

或者这个:

for i in xrange(len(x)):
    if x[i] == 1:
        x[i] == 0