Я действительно не вижу никаких кодифицированных имен для этого в Python, это точно.«Слияние» - это хорошо, но о нем говорят в самых разных контекстах.«Плуг», как правило, не используется и обеспечивает отличное визуальное представление о постоянном проталкивании линии почвы.Возможно, я просто слишком много времени уделял садоводству.
Я также расширил принцип, чтобы разрешить функциям, которые получают любое количество параметров.
Вы также можете подумать: складка.Он хорошо описывает, как вы берете список (например, длинный отрезок ткани) и собираете его воедино.
import operator
def stagger(l, w):
if len(l)>=w:
return [tuple(l[0:w])]+stagger(l[1:], w)
return []
def pleat(f, l, w=2):
return map(lambda p: f(*p), stagger(l, w))
print pleat(operator.add, range(10))
print pleat(lambda x, y, z: x*y/z, range(3, 13), 3)
print pleat(lambda x: "~%s~"%(x), range(10), 1)
print pleat(lambda a, b, x, y: a+b==x+y, [3, 2, 4, 1, 5, 0, 9, 9, 0], 4)