WEB开发网
开发学院软件开发Python 可爱的 Python: 在 Python 中进行函数编程,第 3 ... 阅读

可爱的 Python: 在 Python 中进行函数编程,第 3 部分

 2008-11-13 13:19:33 来源:WEB开发网   
核心提示: 有个诀窍是把表达式放在列表理解的单项元组里,但是并不能提供任何使用表达层次绑定来处理高阶函数的方法,可爱的 Python: 在 Python 中进行函数编程,第 3 部分(3),为了使用高阶函数,我们仍然需要使用块层次的绑定,而且同时命名了那个算术计算(但只是在表达式的范围内),作为&ld

有个诀窍是把表达式放在列表理解的单项元组里,但是并不能提供任何使用表达层次绑定来处理高阶函数的方法。为了使用高阶函数,我们仍然需要使用块层次的绑定,如下所示:

清单 4:带有 'map()' 的 Python 块级别绑定

>>> list_of_list = [[1,2,3],[4,5,6],[7,8,9]]
>>> let = Bindings()
>>> let.car =
  
     lambda
    
     l: l[0]
>>> map(let.car,list_of_list)
[1, 4, 7]
   

不错,但是如果我们使用 map() ,绑定的范围仍旧比我们期望的要扩大了一点。虽然如此,即便在列表不是我们最终想使用的情况下,耐心地使用列表理解来为我们做名字绑定也是可能的:

清单 5:Python 列表理解的“逐级下降”

    # Compare Haskell expression:
# result = func car_car
# where
# car (x:xs) = x
# car_car = car (car list_of_list)
# func x = x + x^2
>>> [func
  
     for
    
     x
  
     in
    
     list_of_list
...
  
     for
    
     car
  
     in
    
     (x[0],)
...
  
     for
    
     func
  
     in
    
     (car+car**2,)][0]
2
   

我们已经完成了 list_of_list 中基于第一个元素的算术运算,而且同时命名了那个算术计算(但只是在表达式的范围内)。作为“优化”,我们大可不必去创建一个比开始的元素更长的列表,因为我们用最后的索引 0 来选择唯一的第一个元素:

上一页  1 2 3 4 5 6 7  下一页

Tags:可爱 Python Python

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接