2009-10-08 9 views
22

Supposons que j'ai une liste avec des éléments XComment rempoter une liste en Python

[4,76,2,8,6,4,3,7,2,1...] 

Je voudrais les 5 premiers éléments. Sauf s'il a moins de 5 éléments.

[4,76,2,8,6] 

Comment faire?

+3

Voir aussi: http://stackoverflow.com/questions/509211/good-primer- for-python-slice-notation –

Répondre

59

Vous venez avec le sous-index [:5] indiquant que vous voulez (jusqu'à) les 5 premiers éléments.

>>> [1,2,3,4,5,6,7,8][:5] 
[1, 2, 3, 4, 5] 
>>> [1,2,3][:5] 
[1, 2, 3] 
>>> x = [6,7,8,9,10,11,12] 
>>> x[:5] 
[6, 7, 8, 9, 10] 

En outre, mettre le côlon à droite du nombre moyen de comptage de l'élément nième partir - ne pas oublier que les listes sont sur la base 0!

>>> x[5:] 
[11, 12] 
+10

Ceci est communément connu sous le nom de découpage. – Steve314

+3

Cela crée une liste * new *, elle ne coupe pas la liste existante. Pour couper sur place, utilisez 'del' sur une tranche; par exemple. 'del listobj [-x:]' supprimera les derniers éléments * x * de l'objet liste. –

0
l = [4,76,2,8,6,4,3,7,2,1] 
l = l[:5] 
+3

N'appelez simplement pas vos listes 'list' en code réel! –

+0

@too Bien sûr, ceci est uniquement fait à des fins de démonstration: D – mgbowen

1
>>> [1,2,3,4,5,6,7,8,9][:5] 
[1, 2, 3, 4, 5] 
>>> [1,2,3][:5] 
[1, 2, 3] 
20

Pour découper une liste en place sans créer des copies de celui-ci, utilisez del:

>>> t = [1, 2, 3, 4, 5] 
>>> # delete elements starting from index 4 to the end 
>>> del t[4:] 
>>> t 
[1, 2, 3, 4] 
>>> # delete elements starting from index 5 to the end 
>>> # but the list has only 4 elements -- no error 
>>> del t[5:] 
>>> t 
[1, 2, 3, 4] 
>>> 
Questions connexes