2009-10-08 13 views
22

Angenommen, ich habe eine Liste mit X-ElementenWie eine Liste in Python trimmen

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

ich die ersten 5 Elemente möchte. Es sei denn, es hat weniger als 5 Elemente.

[4,76,2,8,6] 

Wie geht das?

+3

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

Antwort

59

Sie Subindex es nur mit [:5] darauf hinweist, dass Sie (bis zu) den ersten 5 Elemente wollen.

>>> [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] 

Auch auf der rechten Seite der Zahl der Doppelpunkt setzen bedeutet Zählung aus dem n-ten Element ab - vergessen Sie nicht, dass die Listen 0-basiert!

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

Dies wird allgemein als Slicing bezeichnet. – Steve314

+3

Dadurch wird eine * neue * Liste erstellt, die vorhandene wird nicht gekürzt. Um an Ort und Stelle zu trimmen, verwenden Sie "del" auf einer Scheibe; z.B. 'del listobj [-x:]' löscht die letzten * x * Elemente aus dem Listenobjekt. –

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

Nennen Sie nicht Ihre Listen 'liste' in realem Code! –

+0

@too Natürlich wird dies nur zu Demonstrationszwecken gemacht: 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

eine Liste an Ort und Stelle zu trimmen, ohne Kopien davon zu erstellen, verwenden 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] 
>>>