几个特殊的函数(待补充)
python是支持多种范型的语言,可以进行所谓函数式编程,其突出体现在有这么几个函数: filter、map、reduce、lambda、yield
lambda
> g = lambda x,y:x+y #x+y,并返回结果 > g(3,4) 7 > (lambda x:x**2)(4) #返回4的平方 16
lambda函数的使用方法:
在lambda后面直接跟变量
变量后面是冒号
冒号后面是表达式,表达式计算结果就是本函数的返回值
冒号后面是表达式,表达式计算结果就是本函数的返回值
比如,要打印一个list,里面依次是某个数字的1次方,二次方,三次方,四次方。用lambda可以这样做:
> lamb = [ lambda x:x,lambda x:x**2,lambda x:x**3,lambda x:x**4 ] > for i in lamb: ... print i(3), ... 3 9 27 81
map
map()是python的一个内置函数,它的基本样式是:
map(func,seq)
func是一个函数,seq是一个序列对象。在执行的时候,序列对象中的每个元素,按照从左到右的顺序,依次被取出来,并放入
到func那个函数里面,并将func的返回值依次存到一个list中。如
> items = [1,2,3,4,5] > squared = [] > for i in items: ... squared.append(i**2) ... > squared [1, 4, 9, 16, 25] > def sqr(x): return x**2 ... > map(sqr,items) [1, 4, 9, 16, 25] > map(lambda x: x**2, items) [1, 4, 9, 16, 25] > [ x**2 for x in items ] #这个我最喜欢了,一般情况下速度足够快,而且可读性强 [1, 4, 9, 16, 25]
要点:
对iterable中的每个元素,依次应用function的方法(本质上就是一个for循环)
将所有结果返回一个list
如果参数很多,则对那些参数并行执行function
继续下面两个例子:
> lst1 = [1,2,3,4,5] > lst2 = [6,7,8,9,0] > map(lambda x,y: x+y, lst1,lst2) #将两个列表中的对应项加起来,并返回一个结果列表 [7, 9, 11, 13, 5]
> lst1 = [1,2,3,4,5] > lst2 = [6,7,8,9,0] > lst3 = [7,8,9,2,1] > map(lambda x,y,z: x+y+z, lst1,lst2,lst3) [14, 17, 20, 15, 6]
可以看到map函数的强大和简洁。如果使用for循环将会很繁琐
reduce
直接看例子:
> reduce(lambda x,y: x+y,[1,2,3,4,5]) 15
reduce函数的计算方式是将列表中的元素累加,((((1+2)+3)+4)+5)=15 与map函数相比较就可以看出两者之间的区别。map是上下运算,reduce是横着逐个元素进行运算。
reduce含可以接受第三个值作为初始值:例如
> reduce(lambda x,y: x+y,[1,2,3,4,5],100) 115
上述列表中计算将以100为初始值执行累加计算,先计算 100+1
filter
filter的中文含义是“过滤器”,在python中,它就是起到了过滤器的作用.
通过下面代码体会:
> numbers = range(-5,5) > numbers [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4] > filter(lambda x: x>0, numbers) [1, 2, 3, 4] > [x for x in numbers if x>0] #与上面那句等效 [1, 2, 3, 4] > filter(lambda x: x > 3, [1,2,3,4,5]) [4,5]
拜读下filter的官方文档解释:
filter(...) filter(function or None, sequence) -> list, tuple, or string Return those items of sequence for which function(item) is true. If function is None, return the items that are true. If sequence is a tuple or string, return the same type, else return a list.
总结
以上就是本文关于简单了解Python中的几种函数的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Python算法输出1-9数组形成的结果为100的所有运算式、Python生成数字图片代码分享等,有什么问题可以随时留言,小编会及时回复大家的。
更新动态
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]