Skip to content

Rimuovere un elemento da un elenco in Python (clear, pop, remove, del)

Python

In Python, usa i metodi elenco clear(), pop() e remove() per rimuovere elementi (elementi) da un elenco. È anche possibile eliminare elementi utilizzando l’istruzione del specificando una posizione o un intervallo con un indice o una sezione.

  • Rimuovi tutti gli elementi:clear()
  • Rimuovi un elemento per indice e ottieni il suo valore:pop()
  • Rimuovi un articolo in base al valore:remove()
  • Rimuovi gli elementi per indice o sezione:del
  • Rimuovere gli elementi che soddisfano la condizione: Elenca comprensioni

Vedere il seguente articolo per aggiungere elementi all’elenco.

Rimuovi tutti gli elementi:clear()

Puoi rimuovere tutti gli elementi dall’elenco con clear().

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

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

Rimuovi un elemento per indice e ottieni il suo valore:pop()

Puoi rimuovere l’elemento nella posizione specificata e ottenere il suo valore con pop().

L’indice all’inizio è 0 (indicizzazione in base zero).

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]

È possibile utilizzare valori negativi per specificare la posizione dalla fine. L’indice alla fine è -1.

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

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

Se l’argomento viene omesso, l’ultimo elemento viene eliminato.

print(l.pop())
# 9

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

La specifica di un indice inesistente genera un errore.

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

Si noti che pop(0), che rimuove il primo elemento, è un’operazione O(n) e inefficiente. Vedere il wiki ufficiale per la complessità computazionale delle varie operazioni in elenco.

Il tipo deque è fornito nel modulo delle raccolte di librerie standard per rimuovere il primo elemento con O(1). Ad esempio, se si desidera utilizzare i dati come una coda (FIFO), è più efficiente utilizzare deque.

Rimuovi un articolo in base al valore:remove()

È possibile rimuovere il primo elemento dall’elenco in cui il suo valore è uguale al valore con specificato remove().

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

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

Se l’elenco ne contiene più di uno che corrisponde al valore specificato, viene eliminato solo il primo.

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

Specificare un valore inesistente genera un errore.

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

Rimuovi gli elementi per indice o sezione:del

clear(), pop() e remove() sono metodi di list. Puoi anche rimuovere elementi da un elenco con le istruzioni del.

Specificare l’elemento da eliminare per indice. Il primo indice è 0 e l’ultimo è -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]

Puoi eliminare più elementi con la sezione.

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]

È anche possibile eliminare tutti gli articoli specificando l’intero intervallo.

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

Puoi anche specificare il passo come [inizio:stop:passo].

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]

Vedere il seguente articolo per i dettagli sulle fette.

Rimuovere gli elementi che soddisfano la condizione: Elenca comprensioni

Rimuovere gli elementi che soddisfano la condizione equivale a estrarre gli elementi che non soddisfano la condizione.

A tale scopo, vengono utilizzate le comprensioni degli elenchi.

Un esempio di rimozione di elementi pari o dispari (= elementi pari o dispari) è il seguente. % è l’operatore resto ei % 2 è il resto della divisione i per 2.

Nella comprensione dell’elenco, viene generato un nuovo elenco. A del metodo del tipo di elenco o dell’istruzione del tipo introdotto differenza finora, l’elenco originale non viene modificato.

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]

Vedere l’articolo seguente per i dettagli sull’estrazione di elementi utilizzando la comprensione degli elenchi.

Altri esempi sono i seguenti.

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']

Vedere l’articolo seguente per esempi per un elenco di stringhe.

Se vuoi rimuovere gli elementi duplicati, usa set().

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