Việc xây dựng trong chức năng any
làm những gì bạn muốn:
>>> any([True, True, False])
True
>>> any([False, False, False])
False
>>> any([False, False, True])
True
any
có lợi thế hơn reduce
của shortcutting các thử nghiệm cho các hạng mục sau trong chuỗi khi nó tìm thấy một giá trị đích thực. Điều này có thể rất tiện dụng nếu trình tự là một máy phát điện với một hoạt động đắt tiền đằng sau nó. Ví dụ:
>>> def iam(result):
... # Pretend this is expensive.
... print "iam(%r)" % result
... return result
...
>>> any((iam(x) for x in [False, True, False]))
iam(False)
iam(True)
True
>>> reduce(lambda x,y: x or y, (iam(x) for x in [False, True, False]))
iam(False)
iam(True)
iam(False)
True
Nếu phiên bản của Python của bạn không có any()
, all()
builtins sau đó họ có thể dễ dàng thực hiện như Guido van Rossum suggested:
def any(S):
for x in S:
if x:
return True
return False
def all(S):
for x in S:
if not x:
return False
return True
Nguồn
2008-12-20 19:16:37