def red(s, f):
    x = s[0]
    for i in range(1, len(s)):
        x = f(x, s[i])
    return x

def prvni_nenulovy(s):

    def f(x, y):
        if x != 0:
            return x
        else:
            return y

    return red(s, f)

# Zde předpokládáme, že seznam neobsahuje None
# (dalo by se to obejít tak, že bychom místo None použili jakýkoliv
# nově vytvořený objekt, třeba prázdný seznam)
def vsechny_stejne(s):

    def g(x, y):
        if x is None or x != y:
            return None
        else:
            return x

    return red(s, g) is not None