2009-11-23 4 views
0

Si j'ai une liste et que je veux créer une liste avec seulement des valeurs paires de la liste originale, comment ferais-je cela?Ajouter des valeurs paires à la nouvelle liste Python

J'ai à l'origine:

list1 = [1,2,3,4,5] 
list2 = [] 
for v in list1: 
    if v % 2 == 0: 
     list2 += v 
print list2 
+0

@paxdiablo: Eh bien, la réponse à * votre * q uestions sont: "Non", "non", et "ne sait pas car il ne fonctionne pas" ("list2 + = v" va se casser). Il voulait juste un code qui fonctionne, et maintenant qu'il l'a, donnons lui une chance de voir si c'est assez bon pour ses besoins. – mhawke

Répondre

7

compréhension de la liste est la voie à suivre:

list1 = [1,2,3,4,5] 
list2 = [i for i in list1 if i%2 == 0] 
print list2 # => [2, 4] 
1
list2 = [x for x in list1 if x%2 == 0] 
3

Si vous souhaitez étendre une list2 existante (pas nécessairement initialement vide):

list2.extend(v for v in list1 if v % 2 == 0) 

S'il n'y a pas de « valeur initiale » pour list2, et vous voulez juste construire à partir de zéro:

list2 = [v for v in list1 if v % 2 == 0] 

Vous remarquerez que la partie intérieure est identique - vous pouvez utiliser cette partie de différentes façons (entre crochets pour créer une nouvelle liste, comme argument à .extend pour étendre une liste existante, et ainsi de suite).

0

Je trouve que ce soit la solution la plus lisible:

list2 = filter(lambda x: x % 2 == 0: list1) 

ou si vous devez utiliser cette fonction plusieurs fois:

is_even = lambda x: x % 2 == 0 

list2 = filter(is_even, list1) 
Questions connexes