2016-08-07 15 views
1

Ich entschuldige mich vorzeitig für die grundlegende Natur dieser Frage, aber ich könnte wirklich eine andere Reihe von Augen verwenden, um zu sehen, warum ich immer noch eine IndexError: list index out of range bekomme.Indexing Fehler Scan-Liste

Hier ist mein Code:

def longestRun(L): 
    counter=1 
    ii=0 
    counts=[1] 
    while ii<=max(range((len(L)))): 
     if L[ii] <= L[(ii+1)]: 
      counter+=1 
      ii+=1 
     else: 
      ii+=1 
      counts.append(counter) 
      counter=1 
      continue 
    counts.sort() 
    return counts[-1] 

Es soll die längsten Streifen von aufeinanderfolgenden Erhöhungen für eine Liste von ganzen Zahlen zählen. Ich habe es funktioniert, indem ich 1 von der while-Anweisung subtrahiert habe, aber dann wird es nicht immer die richtige Antwort zeigen, weil es nicht die ganze Liste durchgehen wird.

Hier ist meine spezifische Fehlermeldung:

IndexError 
Traceback (most recent call last) 
<ipython-input-76-1b4664f2fb31> in <module>() 
----> 1 longestRun(L) 

C:\Users\james_000\Desktop\longestRun.py in longestRun(L) 
     4  counts=[1] 
     5  while ii<=max(range((len(L)))): 
----> 6    if L[ii] <= L[(ii+1)]: 
     7     counter+=1 
     8     ii+=1 

Antwort

0

Ihre while-Schleife while ii<=max(range((len(L)))): ist und dann, wenn Aussage Zustand greift L[ii+1], die das Ende des Arrays wegläuft.

+0

Ich habe versucht, das wie in meinem Beitrag angegeben zu ändern, indem ich 1 von dieser Aussage subtrahiere, aber es versagt dann, die gesamte Liste zu durchlaufen. Ich fange an zu denken, dass es wahrscheinlich einen fundamentalen Fehler im Code gibt, und ich sollte es wahrscheinlich noch einmal von Grund auf neu machen. – Jhanlon

0

Es ist einfache Mathematik. Nehmen wir an, L ist von der Länge 10. Das macht den letzten Index 9. ii kann schließlich 9 sein, also ii+1 wird außerhalb der Reichweite sein.

Verwandte Themen