高阶函数map,filter,reduce及lambda表达式

news/2024/7/24 8:01:12

高阶函数及lambda表达式

高阶函数

fiter(),zip(),map(),reduce()

name=['milo','zou','tom']
age=[20,30,40]
tel=['133','159','189']

现在让3个list列表相关联,用zip(name,age,tel),在用zip并行遍历时,3个列表中的元素是一样多的,如果元素个数不同,会按照最短原则配对(木桶短板)截断

zip()

>>> list(zip(age,name,tel))
[(20, 'milo', '133'), (30, 'zou', '159'), (40, 'tom', '189')]
>>> zip(name,age,tel)
[('milo', 20, '133'), ('zou', 30, '159'), ('tom', 40, '189')]

>>> hobby=['football','baskteball']
>>> zip(name,age,tel,hobby)
[('milo', 20, '133', 'football'), ('zou', 30, '159', 'baskteball')]

map()

map()函数还可以将函数func传递为形参,对遍历后的列表进行额外计算操作


>>> a=[1,3,5]
>>> b=[2,4,6]
>>> c=[2,4,6]
>>> def mf(x,y,z):
	return x*y*z

>>> map(mf,a,b,c)
[2, 12, 30]

reduce()

阶乘操作
reduce()可以更简单的实现递归

case1
>>>n=0
>>> for i in range(100):
	n+=i
	print(n)
可以看出这种方式比较笨

case2	利用reduce()函数的特性
>>> def sum(x,y):
	return x+y

>>> reduce(sum,range(10))
45
>>> reduce(sum,range(100))
4950
>>> 

reduce当然还支持lambda 匿名函数
reduce(lambda x,y:x+y,range(100))
>>> reduce(lambda x,y:x+y,range(100))
4950

filter()

filter()函数同样也支持这样用法

>>> filter(lambda x:x%2,range(15))
[1, 3, 5, 7, 9, 11, 13]
>>> 

lambda表达式(匿名函数)

简单用例

foo=[2,18,9,22,17,24,8,13,27]
print filter(lambda x:x%3==0,foo)
print map(lambda x:x*2+10,foo)
print reduce(lambda x,y:x+y,foo)

http://www.niftyadmin.cn/n/871043.html

相关文章

Java中的注释

注释是对代码的解释和说明,其目的是让程序员能够更加快速的理解代码。在程序代码中适当地添加注释,可以提高程序的可读性和维护性。好的编码规范可以使程序更易阅读、理解和维护。 注释中的文字编译的时候不会生成到class字节码文件当中,它只…

HDU 1290 献给杭电五十周年校庆的礼物(面分割空间 求得到的最大空间数目)

传送门: 献给杭电五十周年校庆的礼物 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 12835 Accepted Submission(s): 7197 Problem Description或许你曾经牢骚满腹或许你依然心怀忧伤或许你近在咫尺…

ER图一对多关系的画法

数字距离哪个实体更近,则该数字就是修饰哪个实体。上图中,1距离”班级“实体更近,m离”学生“实体更近。则说明1个班级拥有m个学生。

HUD 1288 Hat's Tea(反向的贪心,非常好的一道题)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid1288 Hats Tea Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2127 Accepted Submission(s): 484 Problem DescriptionHat is a member of PG S…

Python 3.x变量作用域

变量作用域 case2:局部变量与全局变量同名 x"i am global var" def fun():x100print(x) fun() print(x) ***********output************ 100 i am global var >>> 即便同名,函数内访问的变量就是函数内定义的局部var,函数外访问的就…

Linux下大写的LS命令

刚刚一不小心开了大写,且手比脑快,本来想看一下当前目录下有什么文件,结果一辆小火车跑出来了!

Java-关键字和标识符

关键字:Java语言中已经被赋予特殊意义的单词,关键字都是小写的英语单词。不能把关键字作为标识符使用。 Java中常见的一部分关键字: publicstaticintbyteifnewreturnelsefortrycasefinalbreakprivatecatchfinallynativethrowsdofinallylongs…

HDU 1286 找新朋友 (欧拉公式或者标记法(其实就是欧拉公式的思想))

传送门: http://acm.hdu.edu.cn/showproblem.php?pid1286 找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 14909 Accepted Submission(s): 7936 Problem Description新年快到了&#xff0…