2016-10-10 4 views
-3

Ich frage mich, wie ich eine Liste in einer bestimmten Reihenfolge in Python durchlaufen kann.Wie wird in einer bestimmten Reihenfolge iteriert?

Angesichts der Liste, lst = [1, 3, -1, 2], möchte ich meine Funktion so zu iterieren, dass die nächste Nummer über den Index des Werts der aktuellen Zahl wird.

lst [0] -> lst [1] -> lst [3] -> lst [2] 1 -> 3 -> 2 -> -1

+1

Das ist eine dieser Fragen, die praktisch darum bitten: ** Warum ** würdest du das machen wollen? – MisterMiyagi

Antwort

3

Es gibt ein paar Variablen, die Sie haben nicht spezifiziert:

  1. Welche Art der Fehlerbehandlung sollte das beinhalten?
  2. Möchten Sie, dass es unendlich lange läuft?

Unter der Annahme, dass die entsprechenden Antworten sind "None" und "Ja", hier ist ein Weg, es zu tun:

def create_iter(arr): 
    i = 0 
    while True: 
     yield arr[i] 
     i = arr[i] 

lst = [1,3,-1,2] 
my_iterator = create_iter(lst) 

Dies gibt:

>>> for _ in range(10): 
>>> print (next(my_iterator)) 
1 
3 
2 
-1 
2 
-1 
2 
-1 
2 
-1 
+0

Gut, aber warum nicht einfach 'für mich in create_iter (lst): print (i)'? – zvone

+0

@zvone Denn das verursacht eine Endlosschleife – brianpck

+0

Ah das :) Nun, sollte es;) – zvone

0

Vorausgesetzt, dass Sie überprüfen, dass jeder Wert ist in der Liste, außer dass Sie eine Ende der Liste Bedingung haben müssen, dann hätten Sie

index = 0 
while True: 
    newindex = mylist[index] 
    if newindex >= len(mylist): 
     break 
    elif newindex == index: 
     break 
    else: 
     index = newindex 

Beachten Sie, dass Sie, wenn jeder Eintrag in der Liste ein gültiger Index ist, eine Endlosschleife erhalten würden.

Verwandte Themen