Python tem duas funções muito interessantes: any e all. A função any recebe uma lista (ou outro objeto interável) e retorna True se algum dos elementos for avaliado como True. Já all só retorna True se todos os elementos forem avaliados como True. Veja:
>>> everybody=[1,2,3,4] >>> anybody=[0,1,0,2] >>> nobody=[0,0,0,0] >>> any(everybody) True >>> any(nobody) False >>> any(anybody) True >>> all(everybody) True >>> all(nobody) False >>> all(anybody) False
Sem segredos, certo? Mas essas duas funções junto com os generators permite uma sintaxe muito interessante:
>>> v=[10,12,25,14] >>> any(n>20 for n in v) True >>> all(n>20 for n in v) False
Veja um exemplo disso num código real:
if all(vE numa classe real:
class Form: # ... def validates(self): return not any(field.error for field in self.fields)
View Comments (2)
Interessante ! Vlw...
Quase nem uso any, na verdade acho ela pouco relevante. Prefiro usar a compreensão de listas e programação funcional do python para fazer o mesmo trabalho.
Tipo:
def validates(self):
return not [field.error for field in self.fields if field.error]