Per rimuovere un elemento da una lista (array) di tipo list in Python, usate i metodi clear(), pop() e remove(). Potete anche specificare la posizione e l'intervallo della lista usando index o slice e poi cancellarla usando l'istruzione del.
Le seguenti informazioni sono fornite qui.
- Rimuovere tutti gli elementi:
clear()
- Elimina un elemento nella posizione specificata e ottiene il suo valore.:
pop()
- Cerca gli elementi con il valore specificato e rimuove il primo elemento.:
remove()
- Cancellazione specificando la posizione e l'intervallo nella fetta di indice:
del
- Elimina in batch più elementi che soddisfano i criteri.:indicazione di inclusione della lista
Notate che le liste possono memorizzare dati di diversi tipi, e sono strettamente diverse dagli array. Usate array (libreria standard) o NumPy quando volete gestire array per processi che richiedono dimensioni o indirizzi di memoria, o per calcoli numerici di dati su larga scala.
- Rimuovere tutti gli elementi: clear()
- Elimina un elemento nella posizione specificata e ottiene il suo valore.: pop()
- Cerca gli elementi con il valore specificato e rimuove il primo elemento.: remove()
- Cancellazione specificando la posizione e l'intervallo nella fetta di indice: del
- Elimina in batch più elementi che soddisfano i criteri.: indicazione di inclusione della lista
Rimuovere tutti gli elementi: clear()
Nel metodo clear() della lista, tutti gli elementi vengono rimossi, ottenendo una lista vuota.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l.clear()
print(l)
# []
Elimina un elemento nella posizione specificata e ottiene il suo valore.: pop()
Il metodo pop() di una lista può essere usato per cancellare un elemento in una posizione specificata e ottenere il valore di quell'elemento.
Il primo numero (iniziale) è 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]
Un valore negativo può anche essere usato per specificare la posizione dalla fine (ultima). La fine (ultima) è -1.
print(l.pop(-2))
# 8
print(l)
# [1, 2, 3, 5, 6, 7, 9]
Se l'argomento viene omesso e non viene specificata alcuna posizione, l'elemento alla fine (ultimo) viene cancellato.
print(l.pop())
# 9
print(l)
# [1, 2, 3, 5, 6, 7]
Specificando una posizione inesistente si otterrà un errore.
# print(l.pop(100))
# IndexError: pop index out of range
Si noti che pop(0), che rimuove il primo elemento, richiede il seguente costo e non è un'operazione efficiente. Vedi la seguente pagina sul wiki ufficiale per la complessità computazionale di varie operazioni sulle liste.O(n)
O(1)
Il tipo deque è fornito nel modulo collections della libreria standard come un tipo che cancella gli elementi in cima a questo costo. Per esempio, se volete trattare i dati come una coda (FIFO), è più efficiente usare deque.
Cerca gli elementi con il valore specificato e rimuove il primo elemento.: remove()
Il metodo remove() della lista può essere usato per cercare elementi con lo stesso valore specificato e rimuovere il primo elemento.
l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']
Se la lista contiene più di un elemento che corrisponde al valore specificato, solo il primo verrà rimosso.
l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']
Se viene specificato un valore inesistente, si verifica un errore.
# l.remove('xxx')
# ValueError: list.remove(x): x not in list
Cancellazione specificando la posizione e l'intervallo nella fetta di indice: del
Potete anche usare l'istruzione del per rimuovere elementi dalla lista.
Specifica l'elemento da cancellare tramite il suo indice. Il primo indice (iniziale) è 0, e l'ultimo (finale) è -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]
Se si specifica un intervallo con le fette, è possibile eliminare più elementi in una volta.
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 specificare l'intero intervallo e cancellare tutti gli elementi.
l = list(range(10))
del l[:]
print(l)
# []
[start:stop:step]
Se si specifica l'intervallo nella fetta in questo modo e si specifica il passo incrementale, è possibile eliminare più elementi di salto in una volta.
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]
Per ulteriori informazioni sull'affettare, vedere il seguente articolo.
Elimina in batch più elementi che soddisfano i criteri.: indicazione di inclusione della lista
Il processo di rimozione degli elementi che soddisfano le condizioni è equivalente al processo di lasciare (estrarre) gli elementi che non soddisfano le condizioni. La notazione di comprensione della lista è usata per questo tipo di elaborazione.
- Articoli correlati:Usare la notazione di comprensione delle liste in Python
Un esempio di rimozione di elementi pari o dispari (= lasciare elementi pari o dispari) è mostrato qui sotto.%
Questo è l'operatore di resto.i % 2
Questo è il resto di i diviso per 2.
Nella notazione di comprensione della lista, viene creata una nuova lista. A differenza dei metodi di tipo lista introdotti finora, la lista originale rimane invariata.
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]
Altri esempi. Una varietà di elaborazioni è possibile a seconda dell'espressione condizionale.
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']
Se volete rimuovere gli elementi duplicati, usate il tipo set set.
print(list(set(l)))
# ['David', 'Alice', 'Charlie', 'Bob']