2010-10-24 5 views
0

J'ai une liste pythonmanipulation de la liste Python

alist = [ [0, 4, 5, 5], [2, 2, 4, 5], [6, 7, 8,13]], [ [3, 4, 5, 5], [2, 2, 4, 5], [6, 7, 8,999] ] 

Je dois le résultat est

alist = [[0,4,8,13], [3, 4, 8, 999]] 

Cela signifie deux premiers et deux derniers numéros dans chaque élément alist.

J'ai besoin d'un moyen rapide de faire cela car la liste pourrait être énorme.

+1

Quelle structure de données bizarre modélisez-vous? – Daenyth

+1

Je parie que c'est devoirs. Ils ont seulement laissé le tag [Devoirs]. C'est plus facile de demander ici que de penser. –

Répondre

12
[x[0][:2] + x[-1][-2:] for x in alist] 
1

L'objet est en fait un tuple, plutôt qu'une liste. Cela peut vous trébucher si vous vous attendez à ce qu'il soit modifiable et difficile à lire. Pensez à utiliser le caractère de continuation \ pour de longues lignes:

alist = [ [0, 4, 5, 5], [2, 2, 4, 5], [6, 7, 8,13]], [ [3, 4, 5, 5], [2, 2, 4, 5], [6, 7, 8, 999] ] 

est plus clair que

alist = [ [0, 4, 5, 5], [2, 2, 4, 5], [6, 7, 8,13]], \ 
     [ [3, 4, 5, 5], [2, 2, 4, 5], [6, 7, 8, 999] ] 

qui vous aide également à repérer la double support qui en fait un tuple. Pour une liste:

alist = [ [0, 4, 5, 5], [2, 2, 4, 5], [6, 7, 8,13], \ 
     [ [3, 4, 5, 5], [2, 2, 4, 5], [6, 7, 8, 999] ]] 

Si la compréhension de la liste, comme le suggère la réponse de Javier ne répond pas à vos besoins de vitesse, pensez à un tableau numpy.

Questions connexes