Questo è l'esempio pratica:Python lista sottrazione
Scrivete una funzione
(list1, list2)
che prende in due liste come argomenti e restituire un elenco che è il risultato di rimozione di elementi dalist1
che si possono trovare inlist2
.
Perché questa funzione restituisce [1, 3, 4]
e non [4]
come pensavo sarebbe? Penso che abbia qualcosa a che fare con list1.remove()
. Immagino sia ovvio, ma non riesco a vederlo.
Funziona su questi esempi:
subtractList (['a', 'b', 'c', 'd'], ['x', 'y', 'z']) =
['a', 'b', 'c', 'd']
subtractList([1,2,3,4,5], [2, 4]) =
[1, 3, 5]
ma non su questo:
subtractList(range(5), range(4))
Inoltre ho notato che rimuove solo numeri pari dalla lista.
Ecco il codice:
def subtractList(list1,list2):
list1 = list(list1)
list2 = list(list2)
for i in list1:
if i in list2:
list1.remove(i)
return list1
ho risolto questa pratica con:
def subtractList(list1,list2):
new_list = []
list1 = list(list1)
list2 = list(list2)
for i in list1:
if i not in list2:
new_list.append(i)
return new_list
Correggere la formattazione, in particolare il vostro rientro. Così com'è, è difficile aiutarti. – Ffisegydd
Stai usando Python 3 o Python 2? – Ffisegydd
Inoltre, dato che stai già passando in lista (range (x) è anche una lista) non è più necessario convertirli in liste ('lista1 = lista (lista1)') – thumbtackthief