Je suis en train de filtrer une liste, voici le code:Sortie inattendue lors du filtrage de la liste Python: Que fais-je de mal?
test=['aaa','bbb','ccc','ddd','footer','header']
def rm_hf(x): return x != 'footer'
filter(rm_hf,test)
Résultats dans:
>>>['aaa','bbb','ccc','ddd','header']
C'est le résultat attendu, trouver « pied » dans la liste et le retirer.
Maintenant, je veux supprimer à la fois « en-tête » et « bas de page », donc je le fais:
test2=['aaa','bbb','ccc','ddd','footer','header']
def rm_hf2(x): return x != 'footer' or x != 'header'
filter(rm_hf2,test2)
Résultats dans:
>>>['aaa','bbb','ccc','ddd','footer','header']
Maintenant qui est bizarre, il donne juste à la fois « pied de page ',' header 'au lieu de les filtrer?
Qu'est-ce que j'ai fait de mal? Je pense que ma logique est correcte ...
et, pas ou !!!!! –
-1: Question de logique triviale embrouillée avec "comportement étrange" et "bug en Python". C'est toujours logique. Comment peut-il être difficile de tester 'rm_hf2'? –
Eh bien, je viens de poser une question clairement, vous venez de me voter au lieu de me corriger, wow, ce qu'un expert LOL. Je ne peux pas m'arrêter de rire.Bien je ne me soucie pas des votes ici de toute façon, alors profitez-moi de me voter :) –