Существует множество различных элементов (функций, свойств объекта, значений), например:
lst = [
1,
a(),
obj.prop,
...
z()
]
Я хотел бы проверить, что все значения имеют значение True, поэтому я использую all()
:
all(lst)
Но в этом случае все значения списка вычисляются на момент создания списка.
Цель состоит в том, чтобы не вычислять все значения при инициализации списка, но вычислить его «на лету» и прекратить итерацию (и вычислить) по первому ложному элементу в списке. Таким образом, одним из решений является получение каждого значения из генератора:
def gen():
yield 1
yield a()
yield obj.prop
...
yield z()
Но это не код dry и выглядит уродливо с повторяющимся ключевым словом yield. Есть ли другое, более красивое, решение?