Jest to przykład praktyka:Python lista odejmowanie
Napisz funkcję
(list1, list2)
, które odbywają się w dwóch listach jako argumenty i zwraca listę, która jest wynikiem usuwania elementów zlist1
, które można znaleźć wlist2
.
Dlaczego ta funkcja [1, 3, 4]
powrót i nie [4]
jak myślałem, że będzie? Myślę, że ma to coś wspólnego z list1.remove()
. Sądzę, że to coś oczywistego, ale nie widzę tego.
To działa na tych przykładach:
subtractList (['a', 'b', 'c', 'd'], ['x', 'y', 'z']) =
['a', 'b', 'c', 'd']
subtractList([1,2,3,4,5], [2, 4]) =
[1, 3, 5]
ale nie na ten temat:
subtractList(range(5), range(4))
Również zauważyłem, że usuwa nawet tylko numery z listy.
Oto kod:
def subtractList(list1,list2):
list1 = list(list1)
list2 = list(list2)
for i in list1:
if i in list2:
list1.remove(i)
return list1
Mam rozwiązać tę praktykę z:
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
Proszę naprawić formatowanie, w szczególności swojej wcięcia. W tej chwili trudno ci pomóc. – Ffisegydd
Czy używasz Python 3 lub Python 2? – Ffisegydd
Ponadto, ponieważ już przekazujesz listy (zakres (x) jest także listą), ponowne przekształcenie ich w listy ('list1 = lista (lista1)') jest niepotrzebne – thumbtackthief