Insert given elements between existing elements of a list.

    :param elems: List of elements to insert between elements of ``list_`
    :param list_: List to insert the elements to

    :return: A new list where items from ``elems`` are inserted
             between every two elements of ``list_``

def intercalate(elems, list_):
    """Insert given elements between existing elements of a list.

    :param elems: List of elements to insert between elements of ``list_`
    :param list_: List to insert the elements to

    :return: A new list where items from ``elems`` are inserted
             between every two elements of ``list_``
    """
    ensure_sequence(elems)
    ensure_sequence(list_)

    if len(list_) <= 1:
        return list_

    return sum(
        (elems + list_[i:i+1] for i in xrange(1, len(list_))),
        list_[:1])