a = [1, 2, 2]
value = 2
for i in a:
if i == value:
a.remove(i)
我要删除列表中的2个相同元素。但是结果告诉我,我只是删除其中之一。当我调试它时,我发现它只能循环2次,而不是我希望的3次。
答案 0 :(得分:0)
这里您不必使用比较即可从列表中删除某个值
这是对您的代码的一些修改:
a = [1, 2, 2]
value = 2
try:
for i in a: a.remove (value)
except ValueError: pass
print (a)
无论何时remove ()
函数找不到您要查找的值,它都会引发值错误:ValueError: list.remove(x): x not in list
。要消除这种情况,请尝试尝试将其包围。这样就可以了。
但是,有更多更简便的方法可以使用remove ()
函数。例如,您可以使用while循环。
看下面的代码:
a = [1, 2, 2]
value = 2
while value in a:
a.remove (value)
print (a)
它容易得多。
答案 1 :(得分:0)
您可以将简单的list comprehension用于 1行解决方案:
import numpy as np
import matplotlib.pyplot as plt
time_samples = np.arange(17000)
force_samples = np.arange(17000)
plt.plot(time_samples,force_samples)
plt.show()
time_samples2 = np.random.rand(1,1000)
force_samples2 = np.random.rand(1,1000)
plt.plot(time_samples2,force_samples2)
plt.show()
您可以将以上内容写为:
In [2764]: a = [1, 2, 2]
In [2755]: value = 2
In [2768]: a = [i for i in a if i != value]
In [2769]: a
Out[2769]: [1]
或者,您也可以使用filter删除所有出现的内容:
Python-2
ans = []
for i in a:
if i <> value:
ans.append(i)
Python-3
In [2778]: filter(lambda x: x!= value, a)
Out[2778]: [1]