import random


def parallel_shuffle(mylists):
    """ Shuffles parallel lists together
    
    Args:
        mylists (list of list of obj): The list of parallel lists to shuffle.
            Note that the format is [l1, l2, ..., ln]
    
    Returns:
        list of list of obj: The list of shuffled parallel lists.
        
    Notes:
        Random should be seeded beforehand.
    """
    num = len(mylists)
    length = len(mylists[0])
    length_array = list(range(length))
    random.shuffle(length_array)
    
    shuffled_lists = []
    for i in range(num):
        shuffled_lists.append([])
        
    for order in length_array:
        for i in range(num):
            shuffled_lists[i].append(mylists[i][order])
    
    return shuffled_lists