Finde alle Index mit Rekursion

Ich schreibe ein Programm, das alle Indizes Zahlen für spezifisches Element in list / srting finden, ich muss Rekursion verwenden, und mein func muss nur 2 Argumente bekommen.

Mein Problem ist, dass mein Programm nur den ersten Index finden und aufhören, wie kann ich damit umgehen?

Mein Code:

def find_all(L, v): return 0 if L[0] == v else 1 + find_all(L[1:], v) 

Input: 1. find_all( [1,2,3,4,2,4,5,2,1], 2) 2. find_all("hello wonderful world", "w")

Ausgabe: 1. [1,4,7] 2. [6,16]

2 Solutions collect form web for “Finde alle Index mit Rekursion”

Sie können Pythons Fähigkeit verwenden, um rückwärts durch eine Liste zu gehen und das letzte Element zu ergreifen. Dann legen Sie Listen zusammen mit dem + Operator. Wenn du durch die Liste nach hinten gehst, kannst du den Indice finden, wenn ein Wert gefunden wird, anstatt ihn zu verlieren, wenn du vom Anfang der Liste bis zum Ende gehst.

 def find_all(L, v): if not L: return [] result = [] if L[-1] == v: result = [len(L)-1] return find_all(L[:-1], v) + result 

Du musst irgendwie einen Counter verfolgen. Die Idee ist, find_all(L, v) als Schnittstelle zur "realen" rekursiven Funktion zu verwenden:

 def find_all(L, v): return _find_all(L, v, 0) def _find_all(L, v, position): # Your algorithm here 

Wenn man bedenkt, dass dies Hausaufgaben ist, werde ich die Arbeit nicht für dich tun, aber du solltest von hier aus gehen können.

  • Python rekursiv anhängen Liste Funktion
  • Notwendigkeit, Pyramiden-Dreieck auf Python neu zu erstellen
  • Refactoring rekursive "Vorkommen von" Funktion
  • Python-Funktion kehrt nach Rekursion nicht zurück
  • Rekursive Funktion, die keine zurückgibt?
  • Python rekursiver Funktionsfehler: "maximale Rekursionstiefe überschritten"
  • Warum gibt meine rekursive Funktion keine?
  • Kreuz Produkt von Sets mit Rekursion
  • Merkwürdiges Rekursionsverhalten in Python
  • Rekursiv finden Sie alle Münzkombinationen, die eine bestimmte Menge produzieren
  • N-Queen-Backtracking in Python: Wie gibt man Lösungen zurück, anstatt sie zu drucken?
  • Python ist die beste Programmiersprache der Welt.