2017-08-30 2 views
-1

Der Code, den ich geschrieben habe, funktioniert für alle Werte mit Ausnahme, wenn ich Xlookfor 9 festlegen, die einen Indexfehler erzeugt. Ich habe mit dem Ändern der Indexgrenzen (Zähler gegen Zähler = 0 ändern) und ein paar andere Dinge, aber am Ende mit dem gleichen Fehler. Ich weiß, dass dies eine einfache Indizierung ist, aber ich kann es nicht herausfinden. Jede Hilfe wäre willkommen.Python-Array-Indizierung in For-Schleife

firstlist = [1, 3, 5, 6, 7, 8, 9] 
secondlist = [9, 3, 1, 8, 6, 9, 2] 
valuetolookfor = 6 

b = 0 
e = 0 
s = 0 
counter = 1 

    for i in firstlist: 
     counter += 1 
     if i <= valuetolookfor: 
      s = i-1 
      b = firstlist[counter] 
       if b >= valuetolookfor: 
       e = i 
       break 
+2

Sie sollten die Einrückung beheben. Schlecht eingerückter Python-Code ist Unsinn. – khelwood

+0

Vereinbaren Sie die Gedankenstriche. Ich denke, Ihr Problem beginnt mit "counter = 1", da Python-Arrays mit Element 0 beginnen. Ich denke, "counter = 0" ist, wo Sie anfangen sollten. Du überspringst das erste Element des Arrays und kannst daher '9' dort nicht finden. – RobertB

+0

Danke euch allen für eure Kommentare. Ich habe es durch den Rat von Solaxun zum Laufen gebracht. Ich werde den Beitrag bald aktualisieren. – user2845180

Antwort

1

Sie müssen es nicht mit for loops übermäßig komplizieren. Sie können einfach das Problem:

xvals = [1, 3, 5, 6, 7, 8, 9] 
yvals = [9, 3, 1, 8, 6, 9, 2] 
xlookfor = 6 
yvals[xvals.index(xlookfor)] 
>> 8 
xlookfor = 9 
yvals[xvals.index(xlookfor)] 
>> 2 
+0

Warum eine funktionierende Lösung ablehnen? – AK47

1

In Ihrer Lösung, was Sie tun, hält vor b zwei Schritten, zu allen Zeiten, des aktuellen Wertes Sie in xvals über iterieren oder i in Ihrem Fall. Ich nehme an, was Sie tun wollen, ist es einen Schritt voraus zu halten, also ist das Problem Nummer eins, obwohl nicht die Quelle Ihres Indexfehlers.

Der Grund für Ihren Index Fehler ist, weil einmal b sieht 9, i ist zwei Schritte vor, oder 7. Sie versuchen dann auf die 7. Position in Yvalen, die außerhalb der Grenzen von 0-6 ist (Zero-basierte Indizierung in Python).

Sie tun dies: yvals [7], da e 7 ist, wenn die Schleife endet.