Своя функция zip

Что нужно сделать

В самом конце собеседования вас неожиданно спросили: «Расскажите, что делает функция zip?». Чтобы произвести впечатление, вы решили не только рассказать про неё, но и написать её аналог.

Даны строка и кортеж из чисел. Напишите программу, которая создаёт генератор из пар кортежей «символ — число». Затем выведите на экран сам генератор и кортежи.

Пример:

Строка: abcd
Кортеж чисел: (10, 20, 30, 40)

Результат:
<generator object <genexpr> at 0x00000204A4234048>
('a', 10)
('b', 20)
('c', 30)
('d', 40)

Дополнительно: создайте полный аналог функции zip — сделайте так, чтобы программа работала с любыми итерируемыми типами данных.

Что оценивается

  • Результат вычислений корректен.
  • Формат вывода соответствует примеру.
  • Основной функционал описан в отдельной функции(-ях).
  • Переменные и функции имеют значащие имена, не только a, b, c, d
a = 'abcd'
b = (10, 20, 30, 40)
notzip = ((a[i], b[i]) for i in range((len(a) + len(b)) // 2))


print(notzip)
for i in notzip:
    print(i)