微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 python 和 lambda 函数进行柯里化

如何解决使用 python 和 lambda 函数进行柯里化

假设我在 python 中有一个这样的程序代码

x = np.random.randint(0,9,(4,4))
def foo(x):
  y = np.rot90(x)
  y = np.rot90(y)
  return y

# This can be written as 

y = rot90(rot90(x))

上述 foo 函数可以写成函数的组合,因为所有函数都接受单个参数并返回单个参数。

考虑下面的另一个 foo 函数,它比前面的函数稍微复杂一些,其中所有函数的元数在应用函数时都不相同



def swap_a_with_b(x,a,b):
  x[x==b] = 100
  x[x==a] = b
  x[x==100] = a
  return x

def foo(x):
  a,b = np.argsort(np.bincount(x.flatten()))[-2:]
  return swap_a_with_b(x,b)
  

函数foo如何写成函数组合的形式,其中原始函数可以是任何numpy函数,而swap_a_with_b,我可以使用所有原始函数,额外的辅助函数{{ 1}} 和任何匿名 swap_a_with_b 函数

我知道如果我们使用 lambda 为高阶函数 functools.partial 的特定值 ab 定义特定函数是可以做到的,但是我们可以将其作为带有 swap_a_with_b函数组合来实现吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。