Почему "все" и "любой" не реализованы в виде цепочки "и" и "или"?

Мне было интересно, если это обсуждалось - при разработке Python - all а также any должны быть реализованы в виде цепочки and а также orс соответственно? И каково было основание не делать этого?

Прямо сейчас all а также any реализованы эквивалентно:

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 ответов

Другие вопросы по тегам