`
Classicning
  • 浏览: 255738 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

体验Python的函数式编程

    博客分类:
  • Tech
阅读更多
以前一直听工作室的Pierric讲函数式编程和Haskell,没有真正的见识,昨天在JavaEye的Python圈子里看到有人用Python的函数式编程解决八皇后问题,确实震撼。不过自己的数学能力确实不行,尤其是在复杂的函数定义和极长的return语句面前更是力不从心。简单的看,逻辑判断和递归在函数式编程中占了重要的角色。

不提了,内功是要慢慢修炼的,现在看看用Python能做点什么。

Python也提供了一些可以适用于函数式编程的特性,比如遍历一个列表,取出一个复合值大于5的列表:

l = [3,6,1,9,7,10]
nl = [x for x in l if x > 5]

这种x for x in l的语句的结果就是一个生成器(generator),包含了列表中的所有项

再复杂一些可以是

la = [1,3,5,7,9]
lb = [2,4,6,8,0]
nl = [x + y for x in la for y in lb]

这个结果相当于一个二重循环,它会把两个列表的每一项都相加。

那么如果要将两个列表中的项目对应相加呢,可以用python中的map函数实现

la = [1,3,5,7,9]
lb = [2,4,6,8,0]
func = lambda x,y : x+y
nl = map(func,la,lb)

map对传入的序列执行指定的函数,返回结果列表。

Python还提供了filter函数,用来从序列中取出满足一定条件的子序列:

lc = ['rock', 'tom', 'yakin', 'timosenk']
func = lambda x : len(x) > 4
nl = filter(func,lc)


reduce函数,将序列中的值依次传入计算结果,进行迭代运算

ld = range(100)
func = lambda x,y : x+y
n = reduce(func,ld)

其中x保存每次lambda中运算的结果最后返回,而y则是最近传入的序列中的值

以上差不多就是Python为我们提供的工具,至于从这些开展函数式编程还有很长的路要走,如果你和我一样也是对此一知半解的话,可以去JavaEye的Python圈子里下载那个八皇后问题解的写法体验一下。
分享到:
评论

相关推荐

    函数式编程研讨会简介___下载.zip

    我们还将探讨函数式编程如何与面向对象编程结合,以及在JavaScript、Python等常见编程语言中如何实现函数式编程风格。 此外,我们还将深入讨论函数式编程的几个重要概念,包括柯里化(Currying),它是一种将接受多...

    Python基础编程第三版mobi

    10. **函数式编程**:介绍高阶函数、闭包、装饰器等函数式编程概念,帮助读者掌握更高级的编程技巧。 11. **正则表达式**:Python中的re模块用于处理正则表达式,用于文本匹配和查找。 12. **网络编程**:Python...

    Python-用于在Python34中进行协程驱动的基于异步的泛型编程的小工具库

    在Python 3.4之前,异步编程主要依赖于回调函数,这可能导致回调地狱,使代码难以理解和维护。随着Python 3.5引入了asyncio库,协程编程变得更加优雅,但在3.4版本中,类似的功能可能需要自定义的库来支持。 在...

    python与Tkinter编程代码

    在GUI(图形用户界面)编程方面,Python提供了一个名为Tkinter的内置库,使得开发者能够轻松创建交互式的桌面应用程序。Tkinter是Python的标准GUI库,它基于Tcl/Tk库,为Python程序员提供了丰富的窗口系统。 ...

    【python】python入门编程100例

    在"Python入门编程100例"中,你将通过实际操作去体验这些知识点,每个例子都是一个小型的实战项目,这将使你逐步熟悉Python编程,并提升问题解决能力。通过这样的练习,你可以建立起对Python编程的深入理解和扎实...

    Functional-Programming-with-Python.rar_Programming with C_python

    **函数式编程与Python** 函数式编程是一种编程范式,它强调将计算视为函数的组合,而不是指令的序列。...在实际项目中,结合面向对象和函数式编程的优势,可以提高代码的可读性和效率,从而提升开发体验。

    Python的乐高积木_python趣味编程_乐高积木_python_

    此外,Python还支持函数式编程概念,如高阶函数(可以接收函数作为参数或返回函数的函数)、闭包以及匿名函数(lambda表达式),这些特性进一步增强了函数作为“乐高积木”的组合能力。 除了模块和函数,Python还有...

    python的函数查询手册

    Python是一种高级、解释型、交互式和面向对象的脚本语言。它以其简洁、优雅的语法和强大的功能深受程序员喜爱...通过随身携带的Python函数查询手册和官方文档,无论何时何地,你都能快速找到所需的信息,提升编程体验。

    python核心编程第二版中、英文版对照及习题答案

    再者,Python还支持函数式编程思想,如高阶函数、闭包和装饰器。这些特性使得Python代码可以更简洁、更易于维护。此外,Python的异常处理机制、文件操作和系统交互也是编程中不可或缺的部分。 《Python核心编程》第...

    Python编程之美.docx

    Python还支持面向对象编程、函数式编程和元编程等多种编程范式,使得它能够适应各种复杂的项目需求。 此外,Python的社区活跃,有大量的开源项目和教程可供学习和参考,如Stack Overflow、GitHub、Python官方网站等...

    (完整版)Python快速编程入门教程.ppt

    IPython 是一个交互式解释器,提供了命令行交互式编程的体验。 Python 程序执行原理 Python 程序的执行原理是通过解释器来执行的。Python 解释器将源代码转换为字节码,然后执行字节码。PyCharm 等 IDE 提供了...

    python核心编程高清

    Python的核心特性包括动态类型系统、垃圾回收机制、丰富的内置类型和标准库,以及对多种编程范式的支持,如过程式、面向对象和函数式编程。 本书的第三版涵盖了Python 3.x版本,这一版本引入了许多重要的语言改进...

    Python-VisualStudioCode扩展为数据科学家提供交互式编程体验

    在“Python-VisualStudioCode扩展为数据科学家提供交互式编程体验”这个主题中,我们可以深入探讨以下几个方面: 1. **VSCode Python扩展**:VSCode有内置的Python支持,但通过安装如"Python"或"Jupyter"这样的扩展...

    少儿python编程课件.pptx

    安装完成后,可以启动Python Shell(IDLE),这是一个交互式的Python环境,允许用户直接输入Python代码并立即看到执行结果。 在Python Shell中,通过`print()`函数可以输出文本,例如“Hello World”。此外,Shell...

    Python计划. 编程新思维及实战-on 编程实战武侠写作风格分析.zip

    学习Python编程新思维意味着要理解其面向对象编程、函数式编程以及模块化的概念,这些是Python高效编程的基础。掌握这些思维模式能够帮助开发者编写出更加优雅且易于维护的代码。 在“编程实战”部分,我们通常会...

    python3实用编程技巧进阶(1套课程)\第2章2-7PYTHON 历史记录 据 Python课程 教程 进阶 0基础学习

    IPython是Python的一个增强型交互式 shell,它提供了更丰富的交互体验,包括命令历史的浏览和搜索功能。通过IPython的历史功能,用户可以查找并重用过去输入的代码片段,极大地提高了开发效率。 此外,Python还支持...

    《Python编程入门经典》.((美)James W. Payne)

    - 它支持多种编程范式,包括面向对象、命令式、函数式等。 - Python的设计哲学强调代码的可读性,并且相比其他语言拥有清晰的语法结构。 2. **安装与环境配置**: - 学习者需要首先下载并安装Python解释器。 - ...

    Python趣味编程代码

    通过实践这些"Python趣味编程代码",初学者不仅可以掌握Python语言的基本语法,还能体验到编程的乐趣,逐步建立起解决实际问题的能力。同时,这种实践性的学习方法也有助于巩固理论知识,为后续深入学习Python或进入...

Global site tag (gtag.js) - Google Analytics