Я просто написал немного кода, где я хотел:
def foo(container)
return any((some_obj.attr <= 0 for some_obj in container))
где foo
вернет первый some_obj
, где some_obj.attr
равен нулю или меньше. Альтернатива, я полагаю, была бы
def foo(container):
return next((some_obj for some_obj in container if some_obj.attr <= 0), False)
но это очень хрипло.
Я закончил писать, но мне не нравится, насколько глубоко он вложен.
def foo(container):
for some_obj in container:
if some_obj.attr <= 0:
return some_obj
return False
Чтобы уточнить: container
в этом случае, скорее всего, будет не более 6 объектов (и часто 2 объекта), хотя общий случай более полезен. Я также пытаюсь оптимизировать для удобства чтения, а не для производительности.
Есть ли какая-то лучшая конструкция, чем эта?