À partir de votre comment:
dire que j'ai une liste de [0, -1], il doit retourner -1. si [0,0, -1], il doit retourner -1
Alors que la plupart suggèrent d'utiliser any
et all
, cela ne semble pas être ce que vous voulez réellement:
>>> lst1 = [0, False, [], -1, ""]
>>> lst2 = [4, True, "", 0]
>>> any(lst1)
True
>>> all(lst2)
False
Au lieu de cela, vous peut utiliser le reduce
intégré (ou dans le python 3: functools.reduce
) avec une fonction concordant lambda
, en appliquant or
ou and
aux opérandes, pour obtenir la première valeur "truthy" or "falsy" dans la liste:
>>> reduce(lambda a, b: a or b, lst1)
-1
>>> reduce(lambda a, b: a and b, lst2)
''
En outre, operator.or_
et and_
ne fonctionnera pas, car ceux-ci sont |
et &
au niveau du bit au lieu de logique or
et and
.
>>> reduce(operator.or_, lst1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for |: 'int' and 'list'
>>> lst = [1, 2, 4]
>>> reduce(operator.or_, lst)
7
Voulez-vous revenir strictement'on' ou 'false', ou (en cas de' or') la première valeur truthy de la liste, comme 'a ou b ou c ou ...' serait ? –