IronPython和Python一样都支持多种编程范式(OOP,FP...)。本文讲述当用IronPython进行函数编程时,用到的几个基本元素:内置高阶函数(操作函数的函数:一个函数可以接受另一个函数作为参数,也可以把一个函数作为结果来返回)。这几个函数的共同点是第一个参数都是函数,并且都是对列表数据进行操作,代码简洁明了。
filter(function, iterable)filter函数有两个参数:函数,列表(可以是一个支持迭代操作的容器或者是迭代器),并且返回一个列表。其中第一个参数函数必须是单参数的函数。filter函数返回第二个参数iterable中那些使第一个参数函数返回True值的元素。
注意:如果iterable是字符串或者元组则返回值依然是字符串或者元组,其他情况总是返回一个列表。若function是None,则默认为恒等函数,这样将去除所有取值为false的元素(包括0和None)。当function不为None时:filter(function,iterable)相当于[item for item in iterable if function(item)];当function为None时:filter(function,iterable)相当于[item for item in iterable if item]
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->
>>> def odd(n):
return n%2 #非0则为正
>>> li=[1,2,3,5,9,10,256,-3]
>>> filter(odd, li)
[1, 3, 5, 9, -3]
>>> [e for e in li if odd(e)] #等价表达式
[1, 3, 5, 9, -3]
>>> filteredList=[]
>>> for n in li:
if odd(n):
filteredList.append(n)
>>> filteredList
[1, 3, 5, 9, -3]
>>>
我们可以看到filter函数是怎么运行的,而且通过与另两种完成同样功能的代码对比可以发现,当根据某个规则从一个列表里选出目标元素时用filter函数是如此的简洁明了。
map(function, iterable, ...) map函数原理和filter函数很相似。它对列表(iterable)里面的每个元素调用function函数,并返回一个由function函数结果所组成的列表。如果传入多个iterable参数,function函数必须去取得这些参数(即function函数的参数个数和iterable个数相同)并且作用于所有iterable参数里的每一项。如果其中一个iterable比其他的iterable短,则用None去扩充。
注意:如果参数function是一个lambda表达式,则表达式中不能使用print输出。
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->
>>> def double(n):
return n*2
>>> li=[1,2,3,5,9,10,256,-3]
>>> map(double, li)
[2, 4, 6, 10, 18, 20, 512, -6]
>>> [double(n) for n in li]
[2, 4, 6, 10, 18, 20, 512, -6]
>>> newlist=[]
>>> for n in li:
newlist.append(double(n))
>>> newlist
[2, 4, 6, 10, 18, 20, 512, -6]
>>> wek=['mon','tues','wed','thurs','fri','sat','sun']
>>> work=['worked']*5
>>> work
['worked', 'worked', 'worked', 'worked', 'worked']
>>> def wekStatus(day,sta):
return day+' '+sta
>>> map(wekStatus, wek, work)
['mon worked', 'tues worked', 'wed worked', 'thurs worked', 'fri worked', 'sat ', 'sun ']
>>>
reduce(function, iterable[, initializer])
reduce函数先获得序列中前两项,并把它传递给参数function函数(这个function必须具有两个参数),获得结果后再按序取得序列中的下一项,连同结果再传递给函数,以此类推,直到处理完所有元素返回一个单一值。例如:reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) 相当于计算((((1+2)+3)+4)+5)。 x是function函数的累积值,y是iterable中新取出来的值。 如果有可选参数initializer,它将在进行计算前置于iterable前端。
注意:如果没有可选参数initializer时:1,iterable仅包含一个元素时,将返回此元素的值;2,iterable为空,则将抛出一个TypeError异常。
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->
>>> import operator
>>> nums=[1,2,3,4,5,6,7,8,9]
>>> reduce(operator.add, nums)
45
>>> reduce(operator.add, nums, 10)
55
>>> reduce(operator.add, [])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: reduce() of empty sequence with no initial value
>>> reduce(operator.add, [1])
1
>>>
Rise our ability!
分享到:
相关推荐
在这个作业中,我们将深入探讨Python编程中的两个关键概念:高阶函数(Higher Order Functions)和递归(Recursion)。这两个概念在函数式编程中尤其重要,它们为解决复杂问题提供了简洁而优雅的解决方案。 首先,...
本文实例讲述了JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法。分享给大家供大家参考,具体如下: 高阶函数(higher-order functions),就是返回其它函数的函数,或者使用...
高阶谱书Higher-Order Spectral Analysis Toolbox MATALB 高阶谱分析工具箱原版介绍
Python 函数式编程和高阶函数 01高阶函数概念.mp4
MATLAB高阶谱工具箱-Higher-Order Spectral Analysis Toolbox.rar MATLAB高阶谱工具箱 Matlab中文论坛: www.iLoveMatlab.cn
Python 函数式编程和高阶函数 02高阶函数map的使用.mp4
Python 函数式编程和高阶函数 05高阶函数sorted的使用.mp4
Python 函数式编程和高阶函数 04高阶函数filter的使用.mp4
Python 函数式编程和高阶函数 03高阶函数reduce的使用.mp4
4. **高阶函数(Higher-Order Functions)**:函数可以作为参数传入其他函数,也可以由函数返回。这种能力使得代码更加灵活和模块化,可以编写出更抽象、更通用的函数。 5. **懒惰求值(Lazy Evaluation)**:这是...
在信号处理领域,高阶模糊函数(High-Order Ambiguity Function, HAF)是一种用于参数估计的重要技术,尤其在处理多项式相位信号时表现出色。多项式相位信号是一种广泛存在于通信、雷达和声纳系统中的信号类型,其...
Python 函数式编程和高阶函数 14偏函数.mp4
Python 函数式编程和高阶函数 06匿名函数.mp4
在C++编程语言中,"Higher-order functions"(高阶函数)是一个重要的概念,它源自函数式编程领域。高阶函数是指可以接受一个或多个函数作为参数,或者返回一个新的函数作为结果的函数。这种特性使得C++代码更加灵活...
2. 高阶函数(Higher-order functions) JavaScript支持高阶函数,即可以接受其他函数作为参数或将函数作为返回值的函数。常见的高阶函数包括`forEach`、`map`、`reduce`、`filter`等。这些函数极大地提升了代码的...
Python 高阶函数心得笔记 1. 递归函数 递归函数是一种特殊的函数,它可以调用自己本身。递归函数的作用是将复杂的问题分解成更小的子问题,然后通过解决这些子问题来解决原始的问题。例如,计算阶乘 n! = 1 * 2 * ...
Python 函数式编程和高阶函数 13通用装饰器.mp4
HOSA的核心概念在于高阶累积量(Higher-Order Cumulants, HOCs)和高阶谱(Higher-Order Spectra, HOS)。与传统的自相关函数和功率谱密度不同,高阶累积量能够揭示信号中的非线性特征,而高阶谱则提供了对这些非...
在编程领域,高阶函数(Higher-Order Function)是一个至关重要的概念,尤其在JavaScript这样的函数式编程语言中占据着核心地位。高阶函数是指能够接受一个或多个函数作为参数,并/或返回一个新的函数的函数。这种...