Das traversieren einer Liste in umgekehrter Reihenfolge in Python (index-Stil: "... in range(...)' nur)
Ich bin neu in Python, also ich bin noch immer verwendet, um die Schleife in dieser Sprache.
So, zum Beispiel, habe ich den folgenden code (der element-Typ in der Liste array)
my_list = [array0, array1, array2, array3]
temp = my_list[-1]
for k in range(len(my_list) - 1, 0):
temp = temp + my_list[k - 1]
return temp
Ich soll zum Durchlaufen der Liste vom Ende der Liste und stop an das zweite element (k
=1
), aber es sieht aus wie die for-Schleife wird nie betreten werden und es wird einfach nur wieder die anfängliche Temperatur außerhalb der Schleife. Ich weiß nicht, warum. Kann mir da jemand helfen? Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vermeiden looping mit range, nur die Iteration mit einer for-Schleife als eine Allgemeine Beratung.
Wenn Sie wollen, um das umkehren einer Liste, verwenden Sie
reversed(my_list)
.Also in deinem Fall die Lösung wäre:
Gibt Sie
[array3, array2, ...]
Für das weglassen des letzten array aus der Liste Umgekehrt, verwenden slicing:
Also dein code dreht sich um einen one-liner 🙂
Schauen wir uns dieses Teil für Teil:
len(my_list)
ist 4. Sorange(len(my_list)-1, 0)
ist das gleiche wierange(3, 0)
, die[]
in Python 2. (In Python 3, versuchenlist(range(3, 0))
zu sehen, die gleiche leere Liste.)Wenn Sie möchten, eine abnehmende range, verwenden Sie einen negativen Schritt (drittes argument):
gibt
[3, 2, 1]
. Es hat nicht0
, denn auch für negative Schritte, die Obere Grenze (zweites argument) ist exklusiv, d.h., nicht Teil des Ergebnisses. Es scheint, dass Sie gearbeitet haben, um dieses durch die Initialisierungtemp
variable mit der letzten Reihe in dermy_list
bereits vor der Schleife, und dann 1 subtrahieren aus dem index, wenn Sie es verwenden, um Zugangmy_list
Inhalt in der Schleife.würde so wohl funktionieren.
Jedoch, wenn man die Indizes nur, um den Zugang
my_list
können Sie loswerden von Ihnen direkt durch Iteration über die Elemente vonmy_list
im (hier Umgekehrt), um Sie wollen:Ich gehe davon aus, dass deine arrays sind verkettete in der Schleife. Wenn es stattdessen eine tatsächliche addition (NumPy addition, zum Beispiel — aber ich sehe nicht ein, warum die Reihenfolge der Zugabe wäre die Sache für das, außer vielleicht für Präzision, wenn die Werte in
my_list
sortiert sind), verwenden Sie eine geeignete null-element anstelle vonempty_array
.Können Sie auch loszuwerden, die Schleife komplett. Wenn Sie möchten fügen Sie Ihre arrays:
Wenn Sie möchten, zu verketten:
Können Sie traversieren einer Liste in umgekehrter etwa so:
Halt in das zweite element Bearbeiten Sie Ihre range () - Funktion zu stoppen bei 1: