zip() принимает два или более итерируемых объекта (в данном случае, строки) и создает итератор, который генерирует кортежи, содержащие элементы, исходящие от каждого из итерируемых объектов на соответствующих позициях. Это значит, что zip будет объединять первый элемент S1 с первым элементом S2, второй элемент S1 со вторым элементом S2 и так далее.Поскольку
S1 содержит 3 элемента, а S2 — 6 элементов, zip() объединит только столько элементов, сколько есть в наименьшем итерируемом объекте, то есть в S1.