В Python функции zip
возвращают пользовательский объект-итератор, который вычисляет каждый кортеж элементов из последовательности, которую им лениво присваивается. У этого объекта нет метода __repr__
, поэтому при печати он выдает значение по умолчанию <zip object at <address>>
. Затем конструктор set
оценил созданный итератор, создав набор кортежей. Наборы имеют __repr__
, поэтому при печати набора будет получен ожидаемый результат.