LINUX.ORG.RU

История изменений

Исправление proud_anon, (текущая версия) :

Если ты правильно реализовал zip(), то zip(*zip(a, b, c)) должен быть обратной операцией к zip(a, b, c) по самой логике работы zip, потому что:

zip(a, b, c) == [(a[0], b[0], c[0]), (a[1], b[1], c[1])...] #точнее, не список, а особый итерируемый объект, но не важно
*zip(a, b, c) == (a[0], b[0], c[0]), (a[1], b[1], c[1])...
zip(*zip(a, b, c)) == zip((a[0], b[0], c[0]), (a[1], b[1], c[1]), (a[2], b[2], c[2])...) == [(a[0], a[1], a[2]...), (b[0], b[1], b[2]...), (c[0], c[1], c[2]...)]
x, y, z = zip(*zip(a, b, c))
x == a and y == b and z == c

Исходная версия proud_anon, :

Если ты правильно реализовал zip(), то zip(*zip(a, b, c)) должен быть обратной операцией к zip(a, b, c) по самой логике работы zip, потому что:

zip(a, b, c) == [(a1, b1, c1), (a2, b2, c2)...] #точнее, не список, а особый итерируемый объект, но не важно
*zip(a, b, c) == (a[0], b[0], c[0]), (a[1], b[1], c[1])...
zip(*zip(a, b, c)) == zip((a[0], b[0], c[0]), (a[1], b[1], c[1]), (a[2], b[2], c[2])...) == [(a[0], a[1], a[2]...), (b[0], b[1], b[2]...), (c[0], c[1], c[2]...)]
x, y, z = zip(*zip(a, b, c))
x == a and y == b and z == c