2016-10-08 1 views
1

Je souhaite créer une liste à partir d'une liste existante après avoir supprimé tous les doublons. Le programme fonctionne si j'utilise une "boucle for" mais rien ne se passe si j'utilise une compréhension de liste.Pourquoi cette compréhension de liste basée sur les conditions ne fonctionne-t-elle pas?

#use for loop 
l=[1,2,2,3,1,1,2] 
j=[] 

for i in l: 
    if i not in j: 
     j.append(i) 

print l 
print j 


#using list 
l1=[1,2,2,3,1,1,2] 
j1=[] 

j1=[i for i in l1 if i not in j1] 

print l1 
print j1 
+0

Si vous voulez simplement supprimer duplicat, vous pouvez convertir la liste en set i, e 'set (l)' –

Répondre

2

L'expression [i for i in l1 if i not in j1] est évaluée et affectée à j1. Donc, pendant l'évaluation j1 reste vide.

BTW: Un facile a été de la suppression des doublons est de transmettre la liste à la fonction set puis à la fonction list si vous avez besoin d'une liste:

j1=list(set(l1)) 
0

j1 est [] au début et n'est pas mis à jour à des points intermédiaires dans la compréhension de la liste. Pourrait faire cela au lieu de la compréhension de la liste si:

l1=[1,2,2,3,1,1,2] 
j1=list(set(l1)) 

print l1 
print j1