为什么'all'和'any'没有被实现为'and'和'或'的链?

时间:2017-01-23 02:36:56

标签: python boolean-operations any

我想知道是否讨论过 - 在设计Python时 - allany是否应分别实现为andor的链?不这样做的理由是什么。

现在allany等同于:

def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True

def any(iterable):
    for element in iterable:
        if element:
            return True
    return False

我想知道为什么它没有实现如下:

def all(iterable): # alternative idea
    result = True
    for element in iterable:
        if not element:
            return element
        else:
            result = element
    return result

def any(iterable): # alternative idea
    result = False
    for element in iterable:
        if element:
            return element
        else:
            result = element
    return result

这意味着如果您向all提供类似all([a,b,c,d,e])的内容,则相当于:

(True and) a and b and c and d and e

如果您将相同的列表提供给any([a,b,c,d,e]),则结果将等于:

(False or) a or b or c or d or e

我在括号中放置(True and)和(False or),因为这些是链中的“隐式”元素。

0 个答案:

没有答案