1212 Stimmen

Gibt es eine einfache Möglichkeit, ein Listenelement nach Wert zu löschen?

Ich möchte einen Wert aus einer Liste entfernen, wenn er in der Liste vorhanden ist (was er möglicherweise nicht ist).

a = [1, 2, 3, 4]
b = a.index(6)

del a[b]
print(a)

Das obige Beispiel führt zu dem Fehler:

ValueError: list.index(x): x not in list

Ich muss also Folgendes tun:

a = [1, 2, 3, 4]

try:
    b = a.index(6)
    del a[b]
except:
    pass

print(a)

Aber gibt es nicht einen einfacheren Weg, dies zu tun?

4voto

Ani Menon Punkte 25228

Cuando nums ist die Liste und c ist der zu entfernende Wert:

So entfernen Sie das erste Vorkommen von c in der Liste, tun Sie es einfach:

if c in nums:
    nums.remove(c)

So entfernen Sie alle Vorkommen von c aus der Liste tun:

while c in nums:
    nums.remove(c)

Das Hinzufügen der Ausnahmebehandlung wäre das beste Verfahren, aber ich wollte hauptsächlich zeigen, wie man alle Vorkommen eines Elements aus der Liste entfernt.

4voto

Ravikiran D Punkte 319
 list1=[1,2,3,3,4,5,6,1,3,4,5]
 n=int(input('enter  number'))
 while n in list1:
    list1.remove(n)
 print(list1)

4voto

kilojoules Punkte 8864

Überschreiben Sie die Liste, indem Sie alles außer den Elementen, die Sie entfernen möchten, indizieren

>>> s = [5,4,3,2,1]
>>> s[0:2] + s[3:]
[5, 4, 2, 1]

Allgemeiner ausgedrückt,

>>> s = [5,4,3,2,1]
>>> i = s.index(3)
>>> s[:i] + s[i+1:]
[5, 4, 2, 1]

3voto

Krohnus Melavea Punkte 125

Nehmen wir zum Beispiel an, wir wollen alle 1en aus x entfernen:

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

Dies ist nun eine praktische Anwendung meiner Methode:

def Function(List, Unwanted):
    [List.remove(Unwanted) for Item in range(List.count(Unwanted))]
    return List
x = Function(x, 1)
print(x)

Und das ist meine Methode in einer einzigen Zeile:

[x.remove(1) for Item in range(x.count(1))]
print(x)

Beide geben dies als Ergebnis aus:

[2, 3, 2, 3, 2, 3]

Ich hoffe, das hilft. PS, bitte beachten Sie, dass dies in der Version 3.6.2 geschrieben wurde, so dass Sie es möglicherweise für ältere Versionen anpassen müssen.

1voto

arr = [1, 1, 3, 4, 5, 2, 4, 3]

# to remove first occurence of that element, suppose 3 in this example
arr.remove(3)

# to remove all occurences of that element, again suppose 3
# use something called list comprehension
new_arr = [element for element in arr if element!=3]

# if you want to delete a position use "pop" function, suppose 
# position 4 
# the pop function also returns a value
removed_element = arr.pop(4)

# u can also use "del" to delete a position
del arr[4]

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