def reorder_to(l, order):
    """Returns a list, reordered to a specific ordering.

    :param l: the list to reorder. It is not modified.
    :param order: a list containing the new ordering, 
                  eg [2,1,0] to reverse a list of length 3
    """

    #Zip on ordering, sort by it, then remove ordering.
    return map(lambda el: el[1],
               sorted(zip(order, l), key = lambda el: el[0]))