2017-09-07 2 views
1

Ich bekomme einige seltsame Ergebnisse mit dem Extrahieren von Unterliste.Python 2.7 Unterliste der verschachtelten Liste funktioniert nicht

list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 

Das Umschalten des ersten und zweiten Index führt zu denselben Ergebnissen.

list[:][1] 
Out[8]: [4, 5, 6] 

list[1][:] 
Out[9]: [4, 5, 6] 

und wenn ich das tue, es ist mir ein Fehler

list[0:1][1] 
Traceback (most recent call last): 

    File "<ipython-input-10-93d72f916672>", line 1, in <module> 
list[0:1][1] 

IndexError: list index out of range 

Ist das einige bekannte Fehler mit Python 2.7?

+1

Ein Schnitt enthält nicht die letzte Nummer, z '[1, 2, 3] [0: 1] == [1]' daher '[1, 2, 3] [0: 1] [1]' erzeugt immer einen 'IndexError' (Indizes beginnen bei' 0 '). In Ihrem Beispiel ist "lst [0: 1] == [[1,2,3]]", d. H. Eine Liste mit nur "1" -Elementen, bei denen es sich um eine Liste handelt. Nicht sicher, warum Sie Slices für die Indizierung verwenden '[:]' ist teuer und unnötig. Hinweis: Rufen Sie Ihre Variable 'list' nicht auf, sie verbirgt den eingebauten Typ von Python. – AChampion

+0

Es ist nicht [1,2,3] seine [[1,2,3]], beide sind sehr unterschiedlich! Siehe meine Antwort für weitere Details –

+0

@RathanNaik Ich sehe jetzt, danke! Gibt es trotzdem eine Spalte der Liste zu schneiden? Um beispielsweise eine Liste des ersten Elements von Unterlisten zu erhalten, [1,4,7]? – Roy

Antwort

1

Wenn Sie eine Liste in Scheiben schneiden sagen 0: 5, wird die Liste in Scheiben geschnitten bekommt ohne Liste [5]

Ex : l = [0,1,2,3,4,5] 
l = l[0:5] 
now l is [0,1,2,3,4] 

Die gleiche Situation hier, so dass sie nur 0-ten Element in Liste, die Liste ist nach Scheibe ist [[1,2,3]], was bedeutet, dass das 0. Element [1,2,3] ist und das erste Element außerhalb des Bereichs liegt.!

0

Wenn Sie die Slicelist[0:1] beobachten, erstellt es eine Liste der Größe einer, auch in Python Indizierung beginnt daher eine mit der Größe Index 1 der Liste Zugriff wird ein Fehler list index out of range

list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] //Original List 

list[0:1] // [[1,2,3]] A list of size 1 

list[0:1][1] // This will return list index out of range 

list[0:1][0] // [1,2,3] 
erhöhen
+0

danke für die antwort und richtung zum slice post! – Roy

Verwandte Themen