Проверка всех значений списка на false и если все значения False то должны вернуть также False
Задача сделать функцию, по условиям которой необходимо проверять список с булевыми значениями, и если в списке все значения True или хотя бы одно значение True, то возвращать True, если же в списке все значение False то необходимо возвращать булевое значение False. Первую часть сделал без проблем, а вот с выводом False, не получается.
def all_targets_hit(attempts_for_each_target: list) -> bool:
if all(attempts_for_each_target) or any(attempts_for_each_target):
return True
if not any(attempts_for_each_target):
return False
Ответы (3 шт):
Автор решения: George
→ Ссылка
Ну можно сделать проще:
def foo(a: list[bool]) -> bool:
return any(a)
a = [True, False, False]
print(foo(a))
Или так
def all_targets_hit(hits) -> bool:
return any([any(hit) for hit in hits])
hits = [
[False, False, False],
[False, False, False],
[False, False, False],
]
print(all_targets_hit(hits))
Автор решения: n1tr0xs
→ Ссылка
Это можно сделать так:
def all_targets_hit(targets):
return all(any(target) for target in targets)
Вариант без использования all, any:
def f(targets):
def check_target(target):
for hit in target:
if hit:
return True
return False
for target in targets:
if not check_target(target):
return False
return True
Автор решения: vadim vaduxa
→ Ссылка
такое короче писать функциональщиной
all(map(any, hits)) # [[True, False], [True]] -> True