Je tente de comprendre le fonctionnement des fonctions intégrées Python any()
et all()
.
Je tente de comparer les tuples afin que si une valeur est différente, cela renverra True
et s'ils sont tous les mêmes, cela renverra False
. Comment fonctionnent-ils dans ce cas pour renvoyer [False, False, False] ?
d
est un defaultdict(list)
.
print d['Drd2']
# [[1, 5, 0], [1, 6, 0]]
print list(zip(*d['Drd2']))
# [(1, 1), (5, 6), (0, 0)]
print [any(x) and not all(x) for x in zip(*d['Drd2'])]
# [False, False, False]
À ma connaissance, ceci devrait afficher
# [False, True, False]
car (1,1) sont les mêmes, (5,6) sont différents et (0,0) sont les mêmes.
Pourquoi évalue-t-il à False pour tous les tuples ?
Voir <a href="https://stackoverflow.com/questions/1342601">Manière pythonique de vérifier si une condition est vraie pour un élément d'une liste</a> pour une utilisation pratique de <code>any</code>.