Bonjour à tous
En effet, généralement le any() est bien. Mais là cette fois il m'a un peu enquiquiné...
J'avais un traitement à faire sur n objets impérativement. Chaque traitement me renvoie True/False. Et je devais détecter si au-moins un traitement avait réussi.
J'ai donc tapé sereinement flag=any(x.action() for x in tab). Et (pour moi bizarrement), le traitement ne s'est pas effectué pour tous les objets. J'ai galéré quelques minutes avant de réaliser que any() travaillait à l'économie et s'arrêtait au premier True. Un petit test rapide m'a effectivement confirmé ce fait.
C'est certainement très utile dans la majorité des cas... mais là pour moi ben ça ne me va pas. Je dois réellement traiter tous mes objets.
J'ai un peu cherché si je pouvais m'en sortir en jouant avec all() mais rapidement conclu que ça n'allait pas pouvoir le faire (pour les mêmes raisons => il s'arrêterait au premier False) et j'ai fini par remplacer mon instruction par celle-là: flag=bool(tuple(x for x in tab if x.action()).
Ca fonctionne mais ça m'embête un peu. Si quelqu'un avait plus simple. Ou simplement un retour d'expérience analogue...
Merci à tous.
Partager