def recursive_iter(enumerables):
    '''
    Walks nested list-like elements as though they were sequentially available

    recursive_iter([[1,2], 3])
    # => 1, 2, 3
    '''
    if not is_collection(enumerables) or isinstance(enumerables, (basestring, dict)):
        yield enumerables
    else:
        for elem in enumerables:
            for sub_elem in recursive_iter(elem):
                yield sub_elem