def unshared_copy(inList):
    if isinstance(inList, list):
        return list(map(unshared_copy, inList))
return inList
How to make a completely unshared copy of a complicated list? (Deep copy is not enough)