84 votes

Recherche d'éléments ne figurant pas dans une liste

Donc, voici mon code :

item = [0,1,2,3,4,5,6,7,8,9]
z = []  # list of integers

for item in z:
    if item not in z:
        print item

z contient une liste d'entiers. Je veux comparer item z et imprimer les chiffres qui ne sont pas en z par rapport à item.

Je peux imprimer les éléments qui sont en z si on les compare non pas item, mais quand j'essaie de faire le contraire en utilisant le code ci-dessus rien n'imprime.

De l'aide ?

69voto

Antony Hatchkins Points 5831
>> items = [1,2,3,4]
>> Z = [3,4,5,6]

>> print list(set(items)-set(Z))
[1, 2]

20voto

user3684438 Points 1

Utilisation de la compréhension de la liste :

print [x for x in item if x not in Z]

ou en utilisant la fonction filtre :

filter(lambda x: x not in Z, item)

L'utilisation de set sous n'importe quelle forme peut créer un bogue si la liste en cours de vérification contient des éléments non uniques, par exemple :

print item

Out[39]: [0, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print Z

Out[40]: [3, 4, 5, 6]

set(item) - set(Z)

Out[41]: {0, 1, 2, 7, 8, 9}

par rapport à la compréhension de la liste comme ci-dessus

print [x for x in item if x not in Z]

Out[38]: [0, 1, 1, 2, 7, 8, 9]

ou fonction filtre :

filter(lambda x: x not in Z, item)

Out[38]: [0, 1, 1, 2, 7, 8, 9]

11voto

jspcal Points 20715
list1 = [1,2,3,4]; list2 = [0,3,3,6]

print set(list2) - set(list1)

4voto

Doc Brown Points 13438

Si vous lancez une boucle en prenant des éléments à partir de z, comment pensez-vous qu'ils ne seront pas en z ? Il serait plus judicieux pour l'OMI de comparer les éléments d'une liste différente à z.

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