当前位置:  开发笔记 > 编程语言 > 正文

大多数pythonic形式用于映射一系列语句?

如何解决《大多数pythonic形式用于映射一系列语句?》经验,为你挑选了1个好方法。

这有点困扰我一段时间了.在学习Python之前我学习了Haskell,所以我一直喜欢将许多计算作为映射到列表中.这是由列表理解精美表达的(我在这里给出了pythonic版本):

result = [ f(x) for x in list ]

但在许多情况下,我们希望在x上执行多个语句,例如:

result = [ f(g(h(x))) for x in list ]

这很快变得笨重,难以阅读.

我的正常解决方案是将其扩展回for循环:

result = []
for x in list:
  x0 = h(x)
  x1 = g(x0)
  x2 = f(x1)
  result.append(x2)

关于这一点困扰我的一件事就是不得不初始化空列表'结果'.这是一个微不足道的事情,但它让我感到不快.我想知道是否有任何替代等效形式.一种方法可能是使用本地函数(这是他们在Python中调用的吗?)

def operation(x):
  x0 = h(x)
  x1 = g(x0)
  x2 = f(x1)
  return x2
result = [ operation(x) for x in list ]

上述两种形式中的任何一种都有什么特别的优点/缺点吗?或者是否有更优雅的方式?



1> S.Lott..:

您可以轻松地在Python中执行函数组合.

这是一个创建新函数的方法的演示,该函数是现有函数的组合.

>>> def comp( a, b ):
    def compose( args ):
        return a( b( args ) )
    return compose

>>> def times2(x): return x*2

>>> def plus1(x): return x+1

>>> comp( times2, plus1 )(32)
66

这是一个更完整的功能组合配方.这应该让它看起来不那么笨重.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有