Entfernen von Elementen aus einer Liste (Array) in Python: clear(), pop(), remove(), del

Geschäft

Um ein Element aus einer Liste (Array) vom Typ list in Python zu entfernen, verwenden Sie die Listenmethoden clear(), pop() und remove(). Sie können auch die Position und den Bereich der Liste mit index oder slice angeben und sie dann mit der del-Anweisung löschen.

Hier finden Sie die folgenden Informationen.

  • Alle Elemente entfernen:clear()
  • Löscht ein Element an der angegebenen Position und ermittelt seinen Wert.:pop()
  • Sucht nach Elementen mit dem angegebenen Wert und entfernt das erste Element.:remove()
  • Löschen durch Angabe der Position und des Bereichs in der Index-Slice:del
  • Löschen Sie mehrere Elemente, die die Kriterien erfüllen, im Stapel.:Liste Aufnahme Indikation

Beachten Sie, dass Listen Daten verschiedener Typen speichern können und sich strikt von Arrays unterscheiden. Verwenden Sie Array (Standardbibliothek) oder NumPy, wenn Sie Arrays für Prozesse verwenden möchten, die Speichergröße oder Speicheradresse erfordern, oder für numerische Berechnungen von großen Daten.

Alle Elemente entfernen: clear()

Bei der Listenmethode clear() werden alle Elemente entfernt, so dass eine leere Liste entsteht.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

l.clear()
print(l)
# []

Löscht ein Element an der angegebenen Position und ermittelt seinen Wert.: pop()

Die Methode pop() einer Liste kann verwendet werden, um ein Element an einer bestimmten Position zu löschen und den Wert dieses Elements zu erhalten.

Die erste (anfängliche) Zahl ist 0.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(l.pop(0))
# 0

print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

print(l.pop(3))
# 4

print(l)
# [1, 2, 3, 5, 6, 7, 8, 9]

Ein negativer Wert kann auch verwendet werden, um die Position vom Ende (letzten) aus anzugeben. Das Ende (letzte) ist -1.

print(l.pop(-2))
# 8

print(l)
# [1, 2, 3, 5, 6, 7, 9]

Wenn das Argument weggelassen und keine Position angegeben wird, wird das Element am Ende (zuletzt) gelöscht.

print(l.pop())
# 9

print(l)
# [1, 2, 3, 5, 6, 7]

Die Angabe einer nicht existierenden Position führt zu einem Fehler.

# print(l.pop(100))
# IndexError: pop index out of range

Beachten Sie, dass pop(0), bei dem das erste Element entfernt wird, die folgenden Kosten erfordert und keine effiziente Operation ist. Auf der folgenden Seite des offiziellen Wikis finden Sie Informationen zur Komplexität verschiedener Operationen auf Listen.
O(n)

O(1)Der Typ deque wird in der Standardbibliothek collections als ein Typ bereitgestellt, der Elemente zu diesem Preis nach oben löscht. Wenn Sie beispielsweise Daten wie eine Warteschlange (FIFO) behandeln wollen, ist es effizienter, deque zu verwenden.

Sucht nach Elementen mit dem angegebenen Wert und entfernt das erste Element.: remove()

Die Listenmethode remove() kann verwendet werden, um nach Elementen mit demselben Wert wie angegeben zu suchen und das erste Element zu entfernen.

l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']

l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']

Wenn die Liste mehr als ein Element enthält, das dem angegebenen Wert entspricht, wird nur das erste entfernt.

l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']

Wenn ein nicht vorhandener Wert angegeben wird, tritt ein Fehler auf.

# l.remove('xxx')
# ValueError: list.remove(x): x not in list

Löschen durch Angabe der Position und des Bereichs in der Index-Slice: del

Sie können auch die Anweisung del verwenden, um Elemente aus der Liste zu entfernen.

Geben Sie das zu löschende Element durch seinen Index an. Der erste (anfängliche) Index ist 0, und der letzte (endgültige) Index ist -1.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[0]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[-1]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8]

del l[6]
print(l)
# [1, 2, 3, 4, 5, 6, 8]

Wenn Sie einen Bereich mit Slices angeben, können Sie mehrere Elemente auf einmal löschen.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[2:5]
print(l)
# [0, 1, 5, 6, 7, 8, 9]

l = list(range(10))
del l[:3]
print(l)
# [3, 4, 5, 6, 7, 8, 9]

l = list(range(10))
del l[4:]
print(l)
# [0, 1, 2, 3]

l = list(range(10))
del l[-3:]
print(l)
# [0, 1, 2, 3, 4, 5, 6]

Es ist auch möglich, den gesamten Bereich anzugeben und alle Elemente zu löschen.

l = list(range(10))
del l[:]
print(l)
# []

[start:stop:step]Wenn Sie den Bereich im Slice auf diese Weise festlegen und einen inkrementellen Schritt angeben, können Sie mehrere springende Elemente auf einmal löschen.

l = list(range(10))
del l[2:8:2]
print(l)
# [0, 1, 3, 5, 7, 8, 9]

l = list(range(10))
del l[::3]
print(l)
# [1, 2, 4, 5, 7, 8]

Weitere Informationen zum Slicing finden Sie im folgenden Artikel.

Löschen Sie mehrere Elemente, die die Kriterien erfüllen, im Stapel.: Liste Aufnahme Indikation

Der Prozess des Entfernens von Elementen, die die Bedingungen erfüllen, ist gleichwertig mit dem Prozess des Verlassens (Extrahierens) von Elementen, die die Bedingungen nicht erfüllen. Für diese Art der Verarbeitung wird die Notation des Listenverständnisses verwendet.

Ein Beispiel für das Entfernen von ungeraden oder geraden Elementen (= Verlassen von geraden oder ungeraden Elementen) ist unten dargestellt.
%Dies ist der Restwertoperator.
i % 2
Dies ist der Rest von i geteilt durch 2.

In der Notation des Listenverständnisses wird eine neue Liste erstellt. Im Gegensatz zu den bisher vorgestellten Methoden vom Typ Liste bleibt die ursprüngliche Liste unverändert.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print([i for i in l if i % 2 == 0])
# [0, 2, 4, 6, 8]

print([i for i in l if i % 2 != 0])
# [1, 3, 5, 7, 9]

print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Andere Beispiele. Je nach bedingtem Ausdruck ist eine Vielzahl von Verarbeitungen möglich.

l = ['Alice', 'Bob', 'Charlie', 'Bob', 'David']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'David']

print([s for s in l if s != 'Bob'])
# ['Alice', 'Charlie', 'David']

print([s for s in l if s.endswith('e')])
# ['Alice', 'Charlie']

Wenn Sie doppelte Elemente entfernen wollen, verwenden Sie den Satztyp “Set”.

print(list(set(l)))
# ['David', 'Alice', 'Charlie', 'Bob']
Copied title and URL