Редактировать: ниже совсем не нужно.Встроенная функция map
автоматически архивирует несколько передаваемых ей итераций, поэтому zip_with(func, iter1, iter2)
можно заменить на map
с теми же аргументами.
map(functools.partial(map, op.add), list1, list2)
Этот раздел не нужен
Вот фрагмент кода, реализующий что-то по принципу zipWith
def zip_with(func, xs, ys):
return [func(x, y) for (x, y) in zip(xs, ys)]
In [1]: def zip_with(func, xs, ys):
...: return [func(x, y) for (x, y) in zip(xs, ys)]
...:
In [2]: import operator as op
In [3]: zip_with(op.add, [1,2,3], [4,5,6])
Out[3]: [5, 7, 9]
In [4]: import functools
In [5]: zip_with(functools.partial(zip_with, op.add), list1, list2)
Out[5]: [[1, 3, 5], [7, 9, 11], [13, 15, 17]]
на Haskell