逻辑和a_list中的所有元素:
all(a_list)
逻辑或跨a_list中的所有元素:
any(a_list)
如果你有创意,你也可以:
import operator
def my_all(a_list):
return reduce(operator.and_, a_list, True)
def my_any(a_list):
return reduce(operator.or_, a_list, False)
请记住,这些不是短路评估,而内置的是;-)
另一个有趣的方式:
def my_all_v2(a_list):
return len(filter(None,a_list)) == len(a_list)
def my_any_v2(a_list):
return len(filter(None,a_list)) > 0
和另一个:
def my_all_v3(a_list):
for i in a_list:
if not i:
return False
return True
def my_any_v3(a_list):
for i in a_list:
if i:
return True
return False
我们可以一整天,但是,是的,pythonic的方式是使用所有和任何:-)
顺便说一下,Python没有尾递归消除,所以不要尝试直接翻译LISP代码;-)