【问题标题】:python high order function FOLD on lists列表上的python高阶函数FOLD
【发布时间】:2016-12-27 13:21:55
【问题描述】:
class Node:
    def __init__(self, head, tail):
        self.head = head
        self.tail = tail
        self.isEmpty = False

class Empty:
    def __init__(self):
        self.isEmpty = True

def fold(ls,f,z):
    if ls.isEmpty:
        return z
    else:
        return f(ls.head,fold(ls.tail,f,z))

print(fold(Node(4,Node(3,Node(2,Node(1,e)))),lambda x,y:x+y,0)) ## Sum
print(fold(Node(3,Node(2,Node(1,e))),lambda x,y:x*y,1)) ## Multiply
print(fold(Node(3,Node(2,Node(1,e))),lambda x,y:x-y,0)) ## Minus

一切正常,除了带有 lambda 的减号打印。我在这里做错了什么?

此示例列表中的结果应为“0”(3-2-1)。

【问题讨论】:

    标签: python lambda linked-list nodes fold


    【解决方案1】:

    入门提示:折叠有两种形式:左和右,对应于左和右关联性。如果您检查fold 的实现,您应该发现它是哪一个。展开“减号”表达式以查看完整效果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-14
      • 1970-01-01
      相关资源
      最近更新 更多