2017-05-29 5 views
0

Also, im Grunde möchte ich wissen, warum dieses Stück Code manchmal funktioniert ... Manchmal funktioniert es ganz gut, und manchmal bringt es diesen Indexfehler. Ich habe eine zweidimensionale Liste 4x100 mit Daten. Einfach Daten aus der dritten Zeile abrufen, um alles in 1 Variable zusammenzufassen. HierIndexfehler: Listenindex außerhalb des Bereichs passiert manchmal

ist die Liste:

a=4 
lst = [[] for _ in xrange(a)] 
wifi= Wireless('wlan0') 
while i<100: 
    results = wifi.scan() 
    print cont 
    print "%-8.16s Scan completed :" % (wifi.ifname,) 
    for ap in results: 
     if ap.bssid==AP1: 
      lst[0].append(ap.quality.getSignallevel()) 

     if ap.bssid==AP2: 
      lst[1].append(ap.quality.getSignallevel()) 

     if ap.bssid==AP3: 
      lst[2].append(ap.quality.getSignallevel()) 

     if ap.bssid==AP4: 
      lst[3].append(ap.quality.getSignallevel()) 
i=i+1 
cont=cont+1 

for j4 in range(0,100): 
    num7=num7+lst[3][j4] 
+1

Bitte geben Sie uns Ihr 'lst' Objektbeispiel, auf dem es fehlschlägt –

+0

Was ist' lst'? Der Inhalt davon ist wahrscheinlich dein Schuldiger. – Signal

+0

Sie rufen tatsächlich Daten aus der vierten Zeile ab, weil Ihr Index bei 0 zu zählen beginnt. Sind Sie sicher, dass "lst" genau 4x100 ist? Ist 'len (lst) == 100' und' all (len (c) == 4 für c in lst) == True? – Ben

Antwort

0

Wie es bereits erwähnt wurde es nicht genügend Informationen ist Ihnen genau zu sagen, warum Sie den Index aus Bereichsfehler haben.

Es gibt mehrere mögliche Gründe:

  1. wifi.scan() nicht zurück genau 4 Werte in einer Liste. Deshalb ist die dritte Liste in lst nicht von Größe 100. Überprüfen Sie einfach die results Liste hat genau 4 Werte.

  2. Nicht alle if-Anweisungen funktionieren aus irgendeinem Grund. Sie müssen die Werte der einzelnen ap Artikel überprüfen - drucken Sie sie einfach aus und lesen Sie die Werte durch. Die Konstanten AP1, AP2 usw. - sind sie richtig initialisiert?

Auch würde ich elif Aussagen nur statt if verwenden. Ich denke, es wird den Code lesbarer und schöner machen.

+0

Danke Leute! Das Problem war, dass sich die Länge jedes Arrays pro Kompilation unterschied! –

Verwandte Themen