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]

5voto

Jared Burrows Punkte 52572

Um alle doppelten Einträge zu entfernen und einen in der Liste zu belassen:

test = [1, 1, 2, 3]

newlist = list(set(test))

print newlist

[1, 2, 3]

Hier ist die Funktion, die ich für das Projekt Euler verwendet habe:

def removeOccurrences(e):
  return list(set(e))

3voto

marco Punkte 47
for i in range(a.count(' ')):
    a.remove(' ')

Ich glaube, das ist viel einfacher.

2voto

Ich glaube, dies ist wahrscheinlich schneller als jeder andere Weg, wenn Sie sich nicht um die Reihenfolge der Listen kümmern, wenn Sie sich um die endgültige Reihenfolge kümmern, speichern Sie die Indizes aus dem Original und sortieren Sie danach.

category_ids.sort()
ones_last_index = category_ids.count('1')
del category_ids[0:ones_last_index]

2voto

jolvi Punkte 3935

Lassen Sie

>>> x = [1, 2, 3, 4, 2, 2, 3]

Die einfachste und effizienteste Lösung ist, wie bereits zuvor erwähnt

>>> x[:] = [v for v in x if v != 2]
>>> x
[1, 3, 4, 3]

Eine andere Möglichkeit, die weniger Speicherplatz beanspruchen sollte, aber langsamer ist, ist

>>> for i in range(len(x) - 1, -1, -1):
        if x[i] == 2:
            x.pop(i)  # takes time ~ len(x) - i
>>> x
[1, 3, 4, 3]

Zeitliche Ergebnisse für Listen der Länge 1000 und 100000 mit 10% übereinstimmenden Einträgen: 0,16 gegenüber 0,25 ms und 23 gegenüber 123 ms.

Timing with length 1000

Timing with length 100000

1voto

rafiqul786 Punkte 19

Alle Vorkommen eines Wertes aus einer Python-Liste entfernen

lists = [6.9,7,8.9,3,5,4.9,1,2.9,7,9,12.9,10.9,11,7]
def remove_values_from_list():
    for list in lists:
      if(list!=7):
         print(list)
remove_values_from_list()

Ergebnis: 6.9 8.9 3 5 4.9 1 2.9 9 12.9 10.9 11

Alternativ dazu,

lists = [6.9,7,8.9,3,5,4.9,1,2.9,7,9,12.9,10.9,11,7]
def remove_values_from_list(remove):
    for list in lists:
      if(list!=remove):
        print(list)
remove_values_from_list(7)

Ergebnis: 6.9 8.9 3 5 4.9 1 2.9 9 12.9 10.9 11

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