2017-09-07 6 views
1

Je reçois des résultats étranges avec l'extraction de sous-liste. La commutation des premier et second index produit les mêmes résultats.Python 2.7 sous-liste de la liste imbriquée ne fonctionne pas

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

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

et si je le fais, il me donne une erreur

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 

Est-ce une erreur connue avec Python 2.7?

+1

Une tranche n'inclut pas le dernier nombre, par exemple '[1, 2, 3] [0: 1] == [1]' donc '[1, 2, 3] [0: 1] [1]' va toujours créer un 'IndexError' (les index commencent à' 0 '). Dans votre exemple 'lst [0: 1] == [[1,2,3]]', c'est-à-dire une liste avec seulement un élément '1' qui est une liste. Je ne sais pas pourquoi vous utilisez des tranches pour indexer '[:]' est cher et inutile. Note: n'appelez pas votre variable 'list', elle cache le type de python. – AChampion

+0

Ce n'est pas [1,2,3] son ​​[[1,2,3]], les deux sont très différents! Voir ma réponse pour plus de détails –

+0

@RathanNaik Je vois maintenant, merci! Y a-t-il de toute façon trancher une colonne de liste? Par exemple, pour obtenir une liste du premier élément des sous-listes, [1,4,7]? – Roy

Répondre

1

Lorsque vous découpez une liste dire 0: 5, liste se coupé en tranches hors liste [5]

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

Sa même situation ici, de sorte que son seul élément 0e présente dans la liste qui est votre liste après tranche est [[1,2,3]], ce qui signifie que le 0ème élément est [1,2,3] et le 1er élément est hors limites.

0

Si vous observez le Slicelist[0:1], il crée une liste de taille un, également dans indexation Python commence à partir donc, l'indice accès 1 de la liste avec la taille d'un soulèvera une erreur 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] 
+0

merci pour la réponse et la direction à la poste tranche! – Roy