如前所述,您可以使用列表理解进行的所有操作都可以分解为高阶函数,但是在Python中这样做的一个很大一部分问题是Python缺乏对您可以与filter、map和Haskell中的friends一起使用的那种无点编程的支持。这里有一个有点做作的例子,但我想你会明白的。在

让我们看一下这个Python代码:

[(x,y) for x,y in zip(xrange(20), xrange(20, 0, -1)) if x % 2 == 0 and y % 2 == 0]

它所做的就是把这个打印出来:

[(0, 20), (2, 18), (4, 16), (6, 14), (8, 12), (10, 10), (12, 8), (14, 6), (16, 4), (18, 2)]

下面是过滤器的等效版本:

filter(lambda ns : ns[0] % 2 == 0 and ns[1] % 2 == 0, zip(xrange(20), xrange(20, 0, -1)))

我希望你能同意我的观点,那是更丑陋的。在不定义单独的函数的情况下,要使它变得不那么难看,实在做不到什么。在

但是让我们看看Haskell中的等效版本:[(x,y) | (x,y)

好吧,和Python列表理解版一样好。过滤器的等效版本是什么?在

^{pr2}$

好的,我们必须进行导入,但是一旦您理解了它的作用,代码(imo)就会清晰得多,尽管有些人可能仍然喜欢f被指向,或者甚至是带有过滤器的lambda。在我看来,无点版本更简洁,概念更清晰。但我想说的主要一点是,在Python中,这并不是很清楚,因为在不引入单独的库的情况下无法部分应用函数,并且缺少组合运算符,所以在Python中,最好选择列表理解而不是map/filter,但是在Haskell中,这两种方法都可以视具体问题而定。在

python什么是高阶函数_对于高阶函数的理解是什么?相关推荐

  1. 什么是高绩效团队_建立高绩效团队的方式1

    什么是高绩效团队 When I arrived at Quantum Talent in September 2019, although I was excited about the idea o ...

  2. python四大高阶函数_四大高阶函数

    目录 1. 匿名函数 在我们需要一个函数但又不想费神的去命名一个函数的场合下使用,这就是匿名函数 1 f = lambda x,y,z:x+y+z2 defF(x,y,z):3 return x+y+ ...

  3. java 高阶函数_谈谈高阶函数给我们带来了什么。

    什么是高阶函数 一句话解释的话,就是函数可以作为参数以变量的方式持有,引用,构造和使用 一些文章我随手搜的,大家可以看看,它本身的概念并不复杂. 高阶函数-廖雪峰 高阶函数-wiki 其实现在主流语言 ...

  4. 如何编写python函数_编写高质量的Python代码系列(二)之函数

    Python中的函数具备多种特性,这可以简化编程工作.Python函数的某些性质与其他编程语言中的函数相似,但也有性质是Python独有的.本节将介绍如何用函数来表达亿图.提升可复用程度,并减少Bug ...

  5. python在工厂中的应用_什么是工厂函数?Python 中工厂函数怎么理解?

    其实谈工厂函数前必须首先把嵌套作用域和闭包讲清楚 python有一个很有意思的地方,就是def函数可以嵌套在另一个def函数之中.调用外层函数时,运行到的内层def语句仅仅是完成对内层函数的定义,而不 ...

  6. python uppercase函数_字符串-短rot13函数-Python

    字符串-短rot13函数-Python 我正在Python中寻找一个简短而又酷的rot13函数;-)我已经写了这个函数: def rot13(s): chars = "abcdefghijk ...

  7. js 匿名函数_编写高质量箭头函数的5个最佳做法

    作者:Dmitri Pavlutin译者:前端小智 来源:dmitripavlutin.com 箭头功能值得流行.它的语法简洁明了,使用词法绑定绑定 this,它非常适合作为回调.在本文中,通过了解决 ...

  8. subtotal函数_星期五的Excel函数:将总计为SUBTOTAL的筛选列表

    subtotal函数 The Excel SUM function does a great job of adding numbers on a worksheet, and it's probab ...

  9. 编写分段函数子函数_编写自己的函数

    编写分段函数子函数 PYTHON编程 (PYTHON PROGRAMMING) In Python, you can define your own functions. 在Python中,您可以定义 ...

  10. 复平面上gamma函数_神奇的Gamma函数 (中)

    Gamma 函数欣赏 Each generation has found something of interest to say about the gamma function. Perhaps ...

最新文章

  1. SAP-采购订单交货成本抓取方法
  2. python模拟手写笔迹_pytorch实现MNIST手写体识别
  3. 【Android】init.rc
  4. android--------volley之网络请求和图片加载
  5. 反调试技术揭秘(转)
  6. git下载安装、验证、企业实战单机、多人协作
  7. Navicat Premium 15 连接Oracle数据库解决方案
  8. flink的watermark简单理解
  9. 不依赖jstack的java 线程dump和死锁检查工具
  10. linux服务器知识学习:Linux与Windows之间的区别
  11. 北京科技大学与北京工业大学计算机,请问北京工业大学和北京科技大学2010年计算机专业研究生的录取分数线是多少?谢谢!...
  12. 微信小程序:经典语录大全微信小程序源码
  13. 450g带盖吐司配方_【最好吃的吐司记录450克的做法步骤图】偶尔小雨_下厨房
  14. 搭建iscsi存储系统(一)
  15. 常见RGB 颜值表和半透明颜色值的写法
  16. Python math 模块与 cmath 模块
  17. linux怎样配置文件,Linux常见的配置文件
  18. oracle java.sql.SQLException: ORA-00911: 无效字符和ORA-01017: invalid username/password; logon denied
  19. 排序 - 希尔排序
  20. 在打破传统保险业的“玻璃屋顶” 之前,AI+保险还需跨过几道坎

热门文章

  1. 【lzy学习笔记-dive into deep learning】数学预备 2.5-2.7
  2. c++面试常见问题总结
  3. linux内核audit,linux下的audit服务
  4. linux audit 服务,linux 的 audit 服務
  5. 手把手教如何搭建Linux环境(搭建云服务器) (Linux基础篇p1)
  6. Knowledge Tracing: A Survey阅读笔记
  7. 共享单车调度_原来你是这样的共享单车调度员:每天抬1万斤,走2万多步
  8. 北大计算机辅助翻译专业考研,【最新权威版】2019年北京大学计算机辅助翻译CAT考研难度解析—报录比...
  9. python syntax error_python提示Syntax Error报错解决教程
  10. 岌岌可危 中立之争决定云计算未来