def __len__(self):
    return len(self.list1)

def __getitem__(self, i):
    return self.list1[i], self.list2[i]

def __setitem__(self, i, tuple):
    x1, x2 = tuple
self.list1[i] = x1
self.list2[i] = x2
spam_list = ['We', 'are', 'the', 'knights', 'who', 'say', 'Ni']
spam_order = [0, 1, 2, 4, 5, 6, 3]
proxy = LiveZip(spam_order, spam_list)
In-place way to apply a permutation to a list? (inverse of sorting-by-key)