mia domanda è come quello di eliminare tutte le stringhe da un elenco, per esempio se ho list=['hello',1,2,3,4,'goodbye','help']
e il risultato di essere list=[1,2,3,4]
Come eliminare tutte le stringhe da un elenco
risposta
È necessario utilizzare isinstance
per filtrare gli elementi che sono una stringa. Inoltre, non nominare la variabile list
sarà ombra costruito in list
>>> from numbers import Real
>>> lst = ['hello', 1, 2, 3, 4, 'goodbye', 'help']
>>> [element for element in lst if isinstance(element, Real)]
[1, 2, 3, 4]
o
>>> [element for element in lst if isinstance(element, int)]
[1, 2, 3, 4]
o
>>> [element for element in lst if not isinstance(element, str)]
[1, 2, 3, 4]
usare sia di lista come @ user3100115 o utilizzare il "Lisp/lambda approach "
>> l = [1, 2, 'a', 'b']
>> list(filter(lambda a: isinstance(a, int), l))
[1, 2]
A proposito, non nominare la variabile list
. È già una funzione python. :)
è possibile farlo utilizzando isinstance
, ma a differenza degli altri risposta da user3100115 avrei tipi lista nera che non si vuole invece di whitelist solo alcuni tipi. Non sei sicuro di quale sarebbe più adatto per il tuo caso speciale, aggiungendolo solo in alternativa. Funziona anche senza importazioni.
lst = ['hello', 1, 2, 3, 4, 'goodbye', 'help']
filtered = [element for element in lst if not isinstance(element, str)]
print(filtered)
# [1, 2, 3, 4]
Invece di una lista di comprensione, si potrebbe anche utilizzare il filter
incorporato. Questo restituisce un generatore, quindi per stamparlo direttamente, devi prima convertirlo in una lista. Ma se hai intenzione di iterare su di esso (ad esempio utilizzando un for
-loop), non convertirlo e sarà più veloce e consumerà meno memoria a causa di "valutazione lazy". È possibile ottenere lo stesso risultato nell'esempio precedente se si sostituiscono le parentesi quadre con le parentesi tonde.
lst = ['hello', 1, 2, 3, 4, 'goodbye', 'help']
filtered = list(filter(lambda element: not isinstance(element, str), lst))
print(filtered)
# [1, 2, 3, 4]
- 1. Come eliminare tutte le righe da QTableWidget
- 2. Rimuovere le stringhe duplicate da un elenco
- 3. Eliminare tutte le viste da SQL Server
- 4. Come rimuovere tutte le sequenze di escape da un elenco di stringhe?
- 5. Come eliminare tutte le tabelle utente?
- 6. Come eliminare tutte le sessioni Flask?
- 7. Eliminare tutte le funzioni dal database Postgres
- 8. Eliminare tutti gli elementi da un elenco
- 9. Estrarre tutte le chiavi da un elenco di dizionari
- 10. Ottenere tutte le combinazioni possibili da un elenco di numeri
- 11. Come eliminare tutte le tabelle in un database MySQL?
- 12. Come eliminare tutte le righe in un dataframe?
- 13. Ottenere un elenco di tutte le applicazioni
- 14. Rimuovi prefisso da un elenco di stringhe
- 15. ioredis eliminare tutte le chiavi dal modello
- 16. Come eliminare l'ultimo elemento da un elenco in Prolog?
- 17. Come rimuovere elenco di parole da stringhe
- 18. Come eliminare le righe da un data.frame, in base a un elenco esterno, utilizzando R?
- 19. Come si sostituisce da un elenco di stringhe in VIM?
- 20. Come elenco tutte le licenze utilizzate in un progetto maven?
- 21. Come rimuovere stringhe in lista da un altro elenco?
- 22. Rimuovere stringhe da un elenco che contiene numeri in python
- 23. Windows: come ottenere un elenco di tutte le finestre visibili?
- 24. Elenco C++ per rimuovere le stringhe duplicate
- 25. Come eliminare tutte le notifiche locali quando un'applicazione viene cancellata da un iPhone
- 26. Linux: come ottenere un elenco di tutte le finestre visibili
- 27. Elisp: come eliminare un elemento da un elenco di associazione con stringa chiave
- 28. Come cancellare tutte le righe da un TableLayout?
- 29. Elenco di tutte le filiali locali senza un telefono
- 30. Come posso rimuovere tutte le istanze di un elemento da un elenco in Python?
Se avete bisogno di un 'lambda' usare' filter', poi un listcomp o genexpr sta andando sempre essere più veloce e altrettanto succinta (assumendo un nome breve per la variabile viene iterata). Per favore non usare 'map' /' filter' se hai bisogno di un 'lambda' per farli funzionare. – ShadowRanger
Ho aggiunto questo approccio "lisp" per completezza perché al momento c'era solo una risposta sulla comprensione delle liste. Non sapevo che fosse più lento. Grazie! –