Я знаю, что сокращение и все/любые могут сделать трюк, но его производительность плохо, когда список большой.Как применить или/и операцию ко всему элементу в списке python с эффективностью
Например:
Определить функцию, включая печать, чтобы проверить, будет ли функция была выполнена
In [33]: def func(x):
....: print x
....: return bool(x)
....:
Pass operator.or_
как функция снижения
In [34]: import operator
In [35]: reduce(operator.or_, [func(1), func(0)])
1
0
Out[35]: True
Затем мы обнаружили, что второй функция была выполнена даже тогда, когда первая функция возвращает True.
Если я использую или выполняю операцию непосредственно, он немедленно вернется, как только он найдет, что один из них вернет True.
In [36]: func(1) or func(0)
1
Out[36]: True
Однако я не могу этого сделать, если у меня есть большой список.
Есть ли элегантный способ сделать это? Или мне нужно, чтобы проверить цикл?
Update
Происхождение способ я использую для любого является
In [26]: any([func(1), func(0)])
1
0
Out[26]: True
Это действительно оценить все функции.
Ответ Via @Martijn Pieters, теперь я знаю, что могу использовать его неправильно. Извините за непонимание.
Не замыкает ли короткое замыкание? –
'any()' не имеет плохой производительности, это то, что вы хотите здесь. – arshajii
Почему 'any()' slow? –