2016-06-20 6 views
0

Der Bereich ist 20, daher bin ich mir nicht sicher, woher dieser Fehler kommt. Drucklistenlänge hinzugefügtCtypes, IndexError: Listenindex außerhalb des Bereichs

Fehler ist in der zweiten Zeile. Wie rufe ich den Code:

plist = StreamingParameterList() 
print(len(plist)) 
plist = [plist[x] for x in [2,4,12,13,14]] 

Drucklänge zeigt 159

StreamingParameterList() Inhalt

def StreamingParameterList(): 
    """ returns a list of all available streaming parameter names """ 
    num, length = get_parameter_list_size() 
    splist = [] 

    for id in range(num): 
     splist.append(get_parameter_list_item(id, length)[0]) 

    return splist 

genaue Fehler:

Traceback (most recent call last): 
    File "testStream.py", line 27, in (module) 
    plist = [plist[x] for x in [2,4,12,13,14]] 
    File "testStream.py", line 27, in (listcomp) 
    plist = [plist[x] for x in [2,4,12,13,14]] 
IndexError: list index out of range 
+2

Wenn Sie tun 'print (len (plist))' direkt nach 'plist = StreamingParameterList()', was sagt es? – Kevin

+1

Sie sagen "der Bereich ist 20", aber ich sehe keinen Beweis dafür, dass Sie das in Ihrem Code überprüfen. –

Antwort

2

Ihr Bereich nicht 20 ist, das ist die Nur so kann Ihr Index außerhalb der Grenzen liegen. Entweder es ist leer oder es ist weniger als 15.

du dies, indem unmittelbar vor der zweiten Zeile überprüfen können:

print len(plist) 

Dies wird sicherstellen, dass die Länge nicht größer als 15

+0

Nur Spaß. funktioniert immer noch nicht. Bearbeiteter Originalbeitrag zum Anzeigen. print len ​​(plist) zeigt 159 – toshbar

+0

versuchen Zugriff auf PLIST [14]. Werfen plist [14] einen IndexError? –

+0

Python würde keinen IndexError werfen, wenn Ihr Index nicht außerhalb der Grenzen liegt. Etwas in Ihrem Code erzeugt ungültige Indizes. –