Da non perdere che v'è un ex mamente modo efficiente come segue:
import numpy as Numpy
a = Numpy.array([1,7,3,4,4,6,3,8,7,0,8])
b = Numpy.array(['1','7','3','4','4','6','3','8','7','0','8'])
c = Numpy.array([0.1,9.8,-0.4,0.0,9.8,13.7])
d = Numpy.array(['one','three','five','four','three'])
print a
print a[a!=3]
print b
print b[b!='3']
print c
print c[c!=9.8]
print d
print d[d!='three']
e si ottiene:
>>>
[1 7 3 4 4 6 3 8 7 0 8]
[1 7 4 4 6 8 7 0 8]
['1' '7' '3' '4' '4' '6' '3' '8' '7' '0' '8']
['1' '7' '4' '4' '6' '8' '7' '0' '8']
[ 0.1 9.8 -0.4 0. 9.8 13.7]
[ 0.1 -0.4 0. 13.7]
['one' 'three' 'five' 'four' 'three']
['one' 'five' 'four']
questo sembra il migliore. L'unica avvertenza è che se specificamente vuole eseguire una modifica sul posto se l'elenco esistente, nel qual caso viene eseguita un'allocazione aggiuntiva rispetto al ciclo nella sua domanda. –
Grazie. Suppongo che il filtro sia molto più veloce, quindi la mia variante iniziale :) – RaSergiy
'filter + lambda' è esattamente come non si deve fare cose in python. GvR: "il filtro (P, S) è quasi sempre scritto più chiaro come [x per x in S se P (x)]" – georg