Если вы действительно хотите это сделать, все возможно, но не все желательно:
from itertools import combinations, dropwhile
def google(numbers, total):
return bool(next(dropwhile(lambda c: sum(c) != total, combinations(numbers, 2)), False))
Мы перебираем все возможные комбинации из двух чисел numbers
, используя combinations
и сравните их с total
.
Используя dropwhile
, мы можем эмулировать поведение короткого замыкания вашего исходного кода, получая только комбинацию first , которая удовлетворяет условию, если оно существует.Затем, как непустое tuple
, оно будет преобразовано в логический литерал True
.В противном случае next
увидит, что dropwhile
пусто, и вернет значение по умолчанию False
.
Проверка:
print(google([1, 2, 3, 4, 5], 8))
print(google([1, 2, 3, 4], 8))
Вывод:
True
False