Python tief rückwärts in einer Liste
Ich habe eine verschachtelte Liste, und ich umkehren müssen jedes element in der Liste. Aber ich weiß nicht, ob die Liste ist eine Liste von Liste von Liste oder nicht.
So ist ein Beispiel:
p = [1, [2, 3, [4, [5, 6]]]]
print deep_reverse(p)
#>>> [[[[6, 5], 4], 3, 2], 1]
q = [1, [2,3], 4, [5,6]]
print deep_reverse(q)
#>>> [ [6,5], 4, [3, 2], 1]
Was ich habe, so weit ist:
def is_list(p):
return isinstance(p, list)
def deep_reverse(a):
a.reverse()
for i in a:
if is_list(i):
i.reverse()
print a
Funktioniert es auch für den zweiten test, die q, aber tust, die Arbeit für den ersten test.
Ich bin nicht sicher, muss ich die Verwendung einer Rekursion zum Durchlaufen der ganzen Sache? Wie kann ich ändern, meinen code? Danke.
- Ja, Sie brauchen Rekursion. (Haben Sie versucht, so zu tun?)
- Riecht nach Hausaufgaben
- Ihre Funktion geht nur 2 Ebenen tief in der Liste. Als dbaupp sagte, Sie müssen verwenden Sie Rekursion. Als Hinweis, deine Antwort ist richtig bis auf 1 Zeile 😉
- für eine so einfache Sache wie
isinstance(p, list)
Sie nicht brauchen, um zu verschleiern, es in eine eigene Funktion - Ich bin nicht ganz vertraut mit Rekursion in python aber. Könnten Sie mir einen Tip geben bitte?
- Nein , es ist nicht die Hausaufgaben. Es ist nur ein Beispiel, das aus meiner Arbeit, die Daten-Struktur ist ähnlich zu den obigen Beispielen. Ich bin neu in python, also poste die Frage hier.
- Könnten Sie mir bitte einen Tipp, wie man die Rekursion Teil?
- Sehen ielashi Antwort. Es gibt einen Unterschied von einer Zeile aus dem code, den Sie zur Verfügung gestellt.
- Also diese Frage, und Ihre andere ( stackoverflow.com/questions/10845321/...) sind von der Udacity ( udacity.com) CS 101 Endgültig. Ich bin kein Lehrer oder so etwas...aber ich würde nicht denken, dass der beste Weg zu verstehen, der informatik ist, haben die Menschen auf stackoverflow Beantwortung der prüfungsfragen für Sie. Also ich denke, du hast Recht, es ist kein "Hausaufgaben-problem".
InformationsquelleAutor Maggie Mi | 2012-06-02
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Grund, warum der code nicht funktionieren wird, weil wenn
i
ist eine Liste von Listen, die Sie nichtdeep_reverse
die Listen innerhalbi
.Müssen Sie nur ändern, eine Zeile in Ihrem code wie folgt:
Hmmm... Wenn es nur einen Weg, um tief reverse-alle Teillisten als gut....
**wink**
return [i if type(i) != list else deep_reverse(i) for i in lst[::-1]]
. Dies sollte Sie rückwärts mit unterschiedlichen Typen in der Liste.type
wie, dass, nutzenisinstance
reversed
statt[::-1]
Hoffe, das hilft
isinstance(..)
statttype(..) == ..
.IST HIER DIE RICHTIGE LÖSUNG
isinstance
statthier ist ein Vorschlag :
test ok.
elegantesten: