Summe der verschachtelten Liste in Python
Ich versuche, um die Summe einer Liste von verschachtelten Elementen
e.g, zahlen=[1,3,5,6,[7,8]], Summe=30
Schrieb ich den folgenden code
def nested_sum(L):
sum=0
for i in range(len(L)):
if (len(L[i])>1):
sum=sum+nested_sum(L[i])
else:
sum=sum+L[i]
return sum
Den obigen code gibt folgenden error: object of type 'int' has no len()
Ich habe auch versucht, len([L[i]]), immer noch nicht funktioniert
Wer kann helfen? BTW, es ist Python 3.3
Versuchen Sie eines der zahlreichen flatten Funktionen hier gepostet so weit, und einfach
Für Python, wenn ich rekursiver Aufruf, muss ich mir sorgen über zu viel Zeit als der stack geht? Ich weiß, für dieses problem, muss ich wohl gar nicht zu kümmern
Es ist vermutlich ein wenig früh für diese, aber wenn Sie wollen, um den Speicherverbrauch senken, verwenden Sie ein generator statt.
sum(flatten(L))
Für Python, wenn ich rekursiver Aufruf, muss ich mir sorgen über zu viel Zeit als der stack geht? Ich weiß, für dieses problem, muss ich wohl gar nicht zu kümmern
Es ist vermutlich ein wenig früh für diese, aber wenn Sie wollen, um den Speicherverbrauch senken, verwenden Sie ein generator statt.
InformationsquelleAutor Jin | 2013-02-17
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie
isinstance
zu überprüfen, ob ein element eine Liste ist oder nicht. Sie wollen auch die zum Durchlaufen der tatsächlichen Liste, Dinge einfacher machen.InformationsquelleAutor Volatility
Ist es im Allgemeinen betrachtet, mehr pythonic zu Ente geben, sondern als eine explizite Typprüfung. So etwas wird jeden durchsuchbar, nicht nur Listen:
InformationsquelleAutor Jaime
Eine schnelle Rekursion verwendet einen lambda-Ausdruck zu behandeln, der geschachtelten Listen:
rec
, angewendet auf eine Liste zurück, die Summe (rekursiv), auf einen Wert, den Rückgabewert.InformationsquelleAutor njzk2
Ich würde die Summe der flachen Liste:
sum(flatten([(1, 2), [3, {4, 5}]]))
. Ausgezeichnet!InformationsquelleAutor dansalmo
Eine alternative Lösung mit der list comprehension:
Bearbeiten:
Und für Listen mit mehr als zwei Ebenen(thx @Volatilität):
InformationsquelleAutor
Dieser code funktioniert auch.
InformationsquelleAutor yashraj
Beispiel für den Einsatz von filtern und anzeigen und Rekursion:
Und hier ist ein Beispiel für die Verwendung verringern und die Rekursion
Ein Beispiel für die Verwendung von plain old Rekursion:
Beispiel mit simulierten Rekursion:
Anpassung für die Handhabung von selbst-Referentielle Listen mit Links als übung für den Leser.
InformationsquelleAutor Broseph
InformationsquelleAutor Alessandro Anderson