2010-12-12 4 views
2

J'essaie de sélectionner les éléments d'une liste sans le premier élément. le code suivant fonctionne mais il me semble plutôt mochesimple python liste compréhension question

[s[i] for i in range(len(s)) if i>0] 

Y at-il une meilleure façon de l'écrire? merci

Répondre

11

Utilisez la notation de découpage en tranches:

s[1:] 

Vous pouvez éviter de copier la liste ainsi:

itertools.islice(s, 1, None) 

Le résultat est pas une liste - il ne supporte pas l'accès aléatoire, pour instance - mais vous pouvez le passer à tout ce qui accepte un itérateur.

+0

+ 1 pièce de sapin. – delnan

+1

Par souci d'exhaustivité, 'islice' est un peu problématique quand vous voulez découper à partir du milieu d'une liste plus grande. Il crée un itérateur mais marche ensuite jusqu'au début de la tranche en appelant 'next', peut-être plusieurs fois. Le découpage est très rapide car Python n'a qu'à copier la structure de la liste et aucune donnée. –

2

Est-ce que s[1:] ne serait pas correct?

Questions connexes