all(variable > element for element in list)
ou pour l'élément i
des listes dans une liste
all(variable > sublist[i] for sublist in list)
Ceci a l'avantage de coups de pied tôt si l'un des éléments est trop grand. Cela fonctionne parce que le ... for ... in list
est une instance de Python puissant et multiforme generator expressions. Ils sont similaires à list comprehensions mais seuls génèrent des valeurs selon les besoins.
all
lui-même vérifie juste pour voir si toutes les valeurs dans le iterable il est passé sont vraies. Les expressions de générateur, les compréhensions de liste, les listes, les tuples et d'autres sortes de séquences sont toutes des itérations.
Ainsi, la première instruction finit par être équivalent à appeler une fonction comme
def all_are_greater_than_value(list, value):
for element in list:
if element <= value:
return False
return True
avec all_are_greater_than_value(list, variable)
...
ou simplement
all_greater = True
for element in list:
if element <= value:
all_greater = False
break
Cependant, l'expression du générateur est généralement préféré , étant plus concis et "idiomatique".
+1. Je n'ai même pas pensé à ça – aaronasterling
C'est plutôt cool. Merci! – Dtour
C'est un excellent exemple de la capacité de Python à lire comme l'anglais. – intuited