我有1,2,3,6,7,8,1,1,1,6,7,5
将所有1替换为...说.. 0?
的语法是什么表示字符串的.replace(“1”,“0”)
答案 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