Python 将元组展开为半重复对

Python 将元组展开为半重复对,python,functional-programming,Python,Functional Programming,我想从功能上导出此输入/输出模式: >>> foo( (2, 3, 4, 5) ) [(2, 3), (3, 4), (4, 5)] 其思想是将前一个元组的第二个元素作为下一个元组的第一个元素重复。除了使用迭代范式,我没有其他方法可以得到它 不管它值多少钱,我正试图回答这个问题,我还必须在下个月的一次会议上演示函数式Python。所以请帮我一石二鸟,谢谢 >>> f = (2, 3, 4, 5) >>> zip(f[:-1], f[1:])

我想从功能上导出此输入/输出模式:

>>> foo( (2, 3, 4, 5) )
[(2, 3), (3, 4), (4, 5)]
其思想是将前一个元组的第二个元素作为下一个元组的第一个元素重复。除了使用迭代范式,我没有其他方法可以得到它

不管它值多少钱,我正试图回答这个问题,我还必须在下个月的一次会议上演示函数式Python。所以请帮我一石二鸟,谢谢

>>> f = (2, 3, 4, 5)
>>> zip(f[:-1], f[1:])
[(2, 3), (3, 4), (4, 5)]
或者,从:

或者,从:


一个递归的函数式的如何!解决方案:

def foo(t):
    if len(t) < 2:
        return []
    return [(t[0], t[1])] + foo(t[1:])
def foo(t):
    limit = len(t) - 2
    def bar(i):
        if i > limit:
            return []
        return [(t[i], t[i+1])] + bar(i+1)
    return bar(0)

一个递归的函数式的如何!解决方案:

def foo(t):
    if len(t) < 2:
        return []
    return [(t[0], t[1])] + foo(t[1:])
def foo(t):
    limit = len(t) - 2
    def bar(i):
        if i > limit:
            return []
        return [(t[i], t[i+1])] + bar(i+1)
    return bar(0)

嘿你已经回答了另一个人的问题!嘘@Droogans,lol,对不起-我不知道是同一个。@Droogans,但是看看你的评论,我想我明白你的意思了,而且我认为这比我的答案更有趣,因为我的答案更具教育意义,而不是效率。不管怎样,你都应该发布。哇……JTLYK,我写了一个模块,按照他们的问题来做,但是当检查结果时,意识到他们发布了错误的公式。哦,好吧,至少我学到了很多。嘿!你已经回答了另一个人的问题!嘘@Droogans,lol,对不起-我不知道是同一个。@Droogans,但是看看你的评论,我想我明白你的意思了,而且我认为这比我的答案更有趣,因为我的答案更具教育意义,而不是效率。不管怎样,你都应该发布。哇……JTLYK,我写了一个模块,按照他们的问题来做,但是当检查结果时,意识到他们发布了错误的公式。哦,好吧,至少我学到了很多。