Python六剑客

归纳函数(reduce):

第一个参数是函数名,第二个参数是sequence(序列,像list,tuple,str,set,dict都可以)

效果是这样的:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

#提前准备一个函数,计算两数之和from functools import reducedef add_z(x,y):return x+y#计算1~10之间数字之和(还是不包含10)r_z=reduce(add_z,range(1,10))print(r_z)print("r_z 的类型:%s"%type(r_z))

结果如下:

六剑客之五:filter

过滤器(filter):

第一个参数是函数名,用于筛选的函数,第二个参数是Iterable(list,tuple,set,dict,str),返回一个filter且filter属于Iterator

#用于过滤掉一切不需要的东西,下面我们以打印1~10之间的奇数为例说明:from collections import Iterable,Iterator#提前准备一个函数,判断是否为奇数def odd_z(x):    if x%2==1:        return True    else:        return Falsef=filter(odd_z,range(1,10))print("f 的类型:%s"%type(f))print("f 是Iterator:%s"%isinstance(f,Iterator))try:    print(next(f),end='')#f作为Iterator使用    print(next(f),end='')except:    print("\n结束了")for i in f:#f作为Iterable使用    print(i,end='$')

结果如下:

六剑客之六:lambda(匿名函数)

匿名函数(lambda):

只有一行的函数

#我们原来的函数是这样的def square_z(x):    return xx#现在我们可以写成下面这样(冒号后面的一切都是对输入的操作,然后lambda x会返回结果):square1=lambda x:xxprint(square1(2))#配合map,filter等lambda能发挥更大作用,一行代码就能打印列表内元素的平方数print(list(map(lambda x:x*x,[1,2,3,4,5])))print(list(filter(lambda x:x<3,[1,2,3,4,5])))

结果如下:

posted @ 2019-12-24 19:18  进阶的淑琴  阅读(207)  评论(0)    收藏  举报