def and_(arg, *args):
    """Lisp style and. Evaluates expressions from left to right
    and returns the value of the last truthy expression.
    If an expression evaluates to False, returns the value of the Falsey expression.

    usage
    >>> and_(True, True, False)
    False
    >>> and_(True, True, 2)
    2
    >>> and_(True, False, 2)
    False

    >>> and_(0,1,2,3,4,5)
    0

    >>> and_("a"=="a", 5%2)
    1

    >>> and_("a"=="a", 5%5)
    0

    >>> and_(1, [1,2,3,4,5,6,7])
    [1, 2, 3, 4, 5, 6, 7]

    >>> and_([], [1,2,3,4,5,6,7])
    []
    """

    if not arg or not args:
        return arg

    else:
        for a in args:
            if not a:
                return a
        # return The last argument if all arguments were true.
        return args[-1]