Подтвердить что ты не робот

Эквивалент Python функции LINQ All?

Что такое идиоматический метод Python для проверки того, удовлетворяют ли все элементы в коллекции условием? (Метод .NET All() отлично заполняет эту нишу на С#.)

Существует очевидный метод цикла:

all_match = True
for x in stuff:
    if not test(x):
        all_match = False
        break

И понимание списка может сделать трюк, но кажется расточительным:

all_match = len([ False for x in stuff if not test(x) ]) > 0

Там должно быть что-то более элегантное... Что мне не хватает?

4b9b3361

Ответ 1

all_match = all(test(x) for x in stuff)

Это короткое замыкание и не требует, чтобы материал был списком - все, что будет работать с истребителем, - так имеет несколько приятных функций.

Там также аналогичный

any_match = any(test(x) for x in stuff)