Rekursive Python-Funktion zum zählen der vorkommen eines Elements in einer Liste
Wie mache ich eine rekursive Funktion, die mir sagt, wie oft ein element in einer Liste vorhanden ist. Als ein Beispiel können sagen, ich habe die folgende Liste ['a','b','c','b','b','d']. Wie mache ich eine rekursive Funktion mit 2 Argumenten. Eine Liste und das andere element. Die Funktion hat return die Anzahl der Zeiten, die das element in der Liste vorhanden ist.
Ich habe Folgendes versucht, aber die position wird neu gestartet-jedes mal gehen wir wieder in die Funktion:
def number_of_repetitions(liste, element):
position = 0
number_of_rep = 0
if position == len(liste)-1:
return number_of_rep
if liste[position] == element:
position +=1
return number_of_rep + number_of_repetitions(liste[position], element)
else:
position +=1
return number_of_rep + number_of_repetitions(liste[position], element)
print(number_of_repetitions(['a','b','c','b'],'b'))
- def number_of_repetitions(liste, element): position = 0 number_of_rep = 0 wenn position == len(liste)-1: return number_of_rep wenn liste[position] == element: position +=1 return number_of_rep + number_of_repetitions(liste[position], element) else: position +=1 return number_of_rep + number_of_repetitions(liste[position], element) print(number_of_repetitions(['a','b','c','b'],'b'))
Du musst angemeldet sein, um einen Kommentar abzugeben.
Base case: leere Liste, es gibt keine Schlüssel in der Liste
1. Fall: erstes element mit dem Schlüssel überein, Graf (1) und der rekursive Aufruf auf alle, aber firsst element
2. Fall: erstes element passt nicht, es zählen nicht (0) und rekursiven Aufruf auf alle, aber erste element
if lst == []: return 0
sollte man schreibenif not lst: return 0
. Es ist mehr pythonic, und es ermöglicht dem Benutzer zur Eingabe, zum Beispiel ein Tupel anstatt einer Liste.Gibt zählen
result
als:Sie brauchen keine Rekursion für diese.
Unter Ausnutzung der Tatsache, dass
True == 1
undFalse == 0
:Obwohl ich könnte ehrlich gesagt lieber die ausgewählte Antwort über diese, wie es deutlicher.