547 Stimmen

Alle Vorkommen eines Wertes aus einer Liste entfernen?

In Python remove() entfernt das erste Vorkommen eines Wertes in einer Liste.

So entfernen Sie todo Vorkommen eines Wertes in einer Liste?

Das ist es, was ich im Sinn habe:

>>> remove_values_from_list([1, 2, 3, 4, 2, 2, 3], 2)
[1, 3, 4, 3]

716voto

Mark Rushakoff Punkte 236626

Funktionaler Ansatz:

Python 3.x

>>> x = [1,2,3,2,2,2,3,4]
>>> list(filter((2).__ne__, x))
[1, 3, 3, 4]

o

>>> x = [1,2,3,2,2,2,3,4]
>>> list(filter(lambda a: a != 2, x))
[1, 3, 3, 4]

Python 2.x

>>> x = [1,2,3,2,2,2,3,4]
>>> filter(lambda a: a != 2, x)
[1, 3, 3, 4]

286voto

mhawke Punkte 79590

Sie können ein Listenverständnis verwenden:

def remove_values_from_list(the_list, val):
   return [value for value in the_list if value != val]

x = [1, 2, 3, 4, 2, 2, 3]
x = remove_values_from_list(x, 2)
print x
# [1, 3, 4, 3]

147voto

A. Coady Punkte 49113

Sie können die Slice-Zuweisung verwenden, wenn die ursprüngliche Liste geändert werden muss, aber dennoch ein effizientes Listenverständnis (oder einen Generatorausdruck) verwenden.

>>> x = [1, 2, 3, 4, 2, 2, 3]
>>> x[:] = (value for value in x if value != 2)
>>> x
[1, 3, 4, 3]

53voto

funk Punkte 1881

Wiederholung der Lösung aus dem ersten Beitrag in einer abstrakteren Form:

>>> x = [1, 2, 3, 4, 2, 2, 3]
>>> while 2 in x: x.remove(2)
>>> x
[1, 3, 4, 3]

41voto

Shameem Punkte 2324

Siehe die einfache Lösung

>>> [i for i in x if i != 2]

Dies gibt eine Liste mit allen Elementen von x ohne 2

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X