可爱的 Python: 在 Python 中进行函数编程,第 3 部分
2008-11-13 13:19:33 来源:WEB开发网Bindings 类在一个模块或者函数 def 的范围之内完成我们想要的功能,但是在一个单独的表达式内无法使其工作。然而,在 ML-系列语言中,就能很自然地在单个表达式内创建绑定:
清单 2:Haskell 表达式级别的名称绑定
-- car (x:xs) = x -- *could* create module-level binding
list_of_list = [[1,2,3],[4,5,6],[7,8,9]]
-- 'where' clause for expression-level binding
firsts1 = [car x | x <- list_of_list] where car (x:xs) = x
-- 'let' clause for expression-level binding
firsts2 = let car (x:xs) = x in [car x | x <- list_of_list]
-- more idiomatic higher-order 'map' technique
firsts3 = map car list_of_list where car (x:xs) = x
-- Result: firsts1 == firsts2 == firsts3 == [1,4,7]
Greg Ewing 注意到使用 Python 的列表理解可以达到同样的效果;我们甚至可以用象 Haskell 的语法那样清楚的方法来做:
清单 3:Python 2.0+ 表达式级别名称绑定
>>> list_of_list = [[1,2,3],[4,5,6],[7,8,9]]
>>> [car_x
for
x
in
list_of_list
for
car_x
in
(x[0],)]
[1, 4, 7]
- ››可爱毛绒长靴 《庄园物语》皮草系列低调亮相
- ››python操作sharepoint对象模型
- ››Python 2.6.2的.pyc文件格式
- ››Python 2.6.2的字节码指令集一览
- ››Python 测试框架: 用 Python 测试框架简化测试
- ››Python 测试框架: 寻找要测试的模块
- ››Python的class系统
- ››Python 和 LDAP
- ››python图形处理库PIL(Python Image Library)
- ››Python图形图像处理库的介绍之Image模块
- ››Python和Google AppEngine开发基于Google架构的应...
- ››Python 3 初探,第 1 部分: Python 3 的新特性
更多精彩
赞助商链接