89 votes

filtre de tableau en python?

Par exemple, j'ai deux listes

  A           = [6, 7, 8, 9, 10, 11, 12]
subset_of_A  = [6, 9, 12]; # the subset of A


the result should be [7, 8, 10, 11]; the remaining elements 

Existe-t-il une fonction intégrée en python pour faire cela?

128voto

Chinmay Kanchi Points 16353

Si l'ordre n'est pas important, vous devez utiliser set.difference . Cependant, si vous souhaitez conserver l'ordre, une simple compréhension de liste suffit.

 result = [a for a in A if a not in subset_of_A]

EDIT : comme le dit delnan, les performances seront considérablement améliorées si subset_of_A est un set réel, puisque la vérification de l'appartenance à un set est O (1) par rapport à O(n) pour une liste.

 A = [6, 7, 8, 9, 10, 11, 12]
subset_of_A = set([6, 9, 12]) # the subset of A

result = [a for a in A if a not in subset_of_A]

57voto

carlpett Points 4883

Oui, la fonction filter :

 filter(lambda x: x not in subset_of_A, A)

7voto

Alexander Gessler Points 26717

set(A)-set(subset_of_A) vous donne l'ensemble de résultats souhaité, mais il ne conservera pas l'ordre d'origine. Ce qui suit est la préservation de l'ordre :

 [a for a in A if not a in subset_of_A]

7voto

eat Points 4573

Non, il n'y a pas de fonction intégrée en python pour faire cela, car simplement :

 set(A)- set(subset_of_A)

vous apportera la réponse.

5voto

NPE Points 169956

tuple(set([6, 7, 8, 9, 10, 11, 12]).difference([6, 9, 12]))

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