def shuffle(iterable):
    """
    Returns a shuffled copy of the list.
    Caution: DOes not work with unordered collections and generators

    params: iterable
        iterable -> list, sequenece, 


    Examples:
    >>> _.shuffle([1, 2, 3, 4, 5, 6]);
    >>> [4, 1, 6, 3, 5, 2]
    """
    from random import random
    return sorted(iterable, key=lambda x: random())
