"Deep length" of a list
I would write that simply:

def deep_len(lst):
    """Returns the deep length of the list.

    &gt;&gt;&gt; deep_len([1, 2, 3])     # normal list
    3
    &gt;&gt;&gt; x = [1, [2, 3], 4]      # deep list
    &gt;&gt;&gt; deep_len(x)
    4
    &gt;&gt;&gt; x = [[1, [1, 1]], 1, [1, 1]] # deep list
    &gt;&gt;&gt; deep_len(x)
    6
    """
    return sum(deep_len(el) if isinstance(el, list) else 1 for el in lst)


Note that:


This doesn't create lots of new lists with slices, so I would expect it to be more efficient;
isinstance is a much more Pythonic way to check types than type, despite what the "hint" says, as it handles inheritance better; and
There's no need to special-case an empty lst, as the result is already zero in that case.