156 votes

Supprimer toutes les valeurs d'une liste d'une autre liste ?

Je cherche un moyen de supprimer toutes les valeurs d'une liste d'une autre liste.

Quelque chose comme ça :

a = range(1,10)  
a.remove([2,3,7])  
print a  
a = [1,4,5,6,8,9]  

167voto

YOU Points 44812
>>> a = range(1, 10)
>>> [x for x in a if x not in [2, 3, 7]]
[1, 4, 5, 6, 8, 9]

49voto

arunjitsingh Points 1315

Si vous n'avez pas de valeurs répétées, vous pouvez utiliser set difference.

x = set(range(10))
y = x - set([2, 3, 7])
# y = set([0, 1, 4, 5, 6, 8, 9])

puis revenir à la liste, si nécessaire.

30voto

Yaroslav Points 2170
a = range(1,10)
itemsToRemove = set([2, 3, 7])
b = filter(lambda x: x not in itemsToRemove, a)

ou

b = [x for x in a if x not in itemsToRemove]

Ne créez pas le jeu à l'intérieur du lambda l'intérieur de la compréhension. Si vous le faites, il sera recréé à chaque itération, défaisant le point d'utiliser un ensemble du tout.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X