Эквивалент 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
Там должно быть что-то более элегантное... Что мне не хватает?
Ответы
Ответ 1
all_match = all(test(x) for x in stuff)
Это короткое замыкание и не требует, чтобы материал был списком - все, что будет работать с истребителем, - так имеет несколько приятных функций.
Там также аналогичный
any_match = any(test(x) for x in stuff)