2016-11-18 7 views
-1

Ich habe ein Array, das Listen als Einträge hat (zum Beispiel Array = ([1,2], [2,3], [3,4])), und ich möchte diese Listen durchlaufen und vergleichen sie ein bestimmtes Element zu sehen, ob es ein Kriterium übereinstimmt, aber ich halte diesen Fehler: „Indexerror: Listenindex außerhalb des zulässigen Bereichs“Listenindex außerhalb des zulässigen Bereichs? (Python)

dies ist mein Code:

for i in enumerate(arr): 
     if arr([i][6]) == 0.0: 
      humans= humans+[arr[i,col]] 

ich überprüft haben, die tatsächlich Array durch Drucken Array [1] [6] zum Beispiel, und ich weiß für eine Tatsache, dass dort ein Wert ist. Warum wird es nicht durchlaufen?

+0

wenn Sie für i in enumerate Typ (arr): 'I' ist das Tupel' (Index, Wert) '. Kannst du den Stacktrace veröffentlichen? –

+0

Was weißt du über 'arr [i, col]'? Wie sicher bist du bezüglich der Werte von "i" und "col"? Seien Sie versichert, dass wenn Python Ihnen sagt, dass ein Listenindex außerhalb des Bereichs liegt. –

+0

'arr ([i] [6])'. Sie rufen 'arr' mit dem siebten Element von' [i] 'auf, das eine einzelne Elementliste ist. –

Antwort

1

Ihr Verständnis von enumerate() ist falsch. Er gibt die Liste der Tupel zurück, wobei jedes Element seinem Index zugeordnet ist. Hier ist der Wert, den es in Ihrem Fall zurückgegeben:

>>> list(enumerate(arr)) 
[(0, [1, 2]), (1, [2, 3]), (2, [3, 4])] 

Wenn ja iterieren möchten, dass i Wert von 0 bis Länge von arr haben, müssen Sie range() wie verwenden:

for i in range(len(arr)) 

Auch die Inhalt der Liste ist:

arr = [[1,2],[2,3],[3,4]] 

es ist eine 3X2-Liste, und Sie tun arr[i][6], wird es als Indexerror Länge jedes Unter l geben ist nur zwei

+0

Ich habe gerade versucht, ich bekomme immer noch den gleichen Fehler in der zweiten Zeile – Sam

+0

@Sam: Überprüfen Sie meine Bearbeitung –

+0

Vielen Dank ! hat funktioniert! – Sam

Verwandte Themen