python基础07--函数式编程与内置函数

匿名函数:不需要指定显示的指定函数(lambda)

def int(n) :
    return n**(n+1)
print(int(2))
View Code
lambda n:n**(n+1)
print(int(2))
View Code

匿名函数的应用:

dic={'k1':10,'k2':100,'k3':30}
print(max(dic))
print(dic[max(dic,key=lambda k:dic[k])])
View Code
res = map(lambda x:(x+1)**2,[1,3,7,4,9])
for i in res:
    print(i)
View Code

函数式编程:

高阶函数:满足以下一个即可

1.函数的传入参数是一个函数名

2.函数的返回值是一个函数名

map函数:处理序列中的每个元素,得到的结果是一个"列表",该"列表"元素个数和位置与原来一样

array=[1,3,4,71,2]

ret=[]
for i in array:
    ret.append(i**2)
print(ret)

#如果我们有一万个列表,那么你只能把上面的逻辑定义成函数
def map_test(array):
    ret=[]
    for i in array:
        ret.append(i**2)
    return ret

print(map_test(array))

#如果我们的需求变了,不是把列表中每个元素都平方,还有加1,减一,那么可以这样
def add_num(x):
    return x+1
def map_test(func,array):
    ret=[]
    for i in array:
        ret.append(func(i))
    return ret

print(map_test(add_num,array))
#可以使用匿名函数
print(map_test(lambda x:x-1,array))
View Code

reduce函数:

array=range(100)
def reduce_test(func,array):
    l=list(array)
    res=l.pop(0)
    for i in l:
        res=func(res,i)
    return res

print(reduce_test(lambda x,y:x+y,array))
View Code

filter函数:遍历序列中的每个元素,判断每个元素得到的布尔值,若为True则保留

movie_people=['alex','wupeiqi','yuanhao','sb_alex','sb_wupeiqi','sb_yuanhao']

def tell_sb(x):
    return x.startswith('sb')


def filter_test(func,array):
    ret=[]
    for i in array:
        if func(i):
            ret.append(i)
    return ret

print(filter_test(tell_sb,movie_people))


print(filter(lambda x:x.startswith('sb'),movie_people))
View Code

内置函数:

abs:求绝对值               all:将序列值拿出来做布尔值(一假全假)      any:将序列值拿出来做布尔值(一真全真)

bin:十进制转为二进制            hex:十进制转为十六进制                      oct:十进制转为八进制

bool:做布尔值(假:none、0、空)        bytes:将字符串转换成字节     

dir:返回当前范围内的变量、方法和定义类型列表     divmod:除商得余数(用于分页功能)  eval:将数据从字符串结构中提取出来进行运算

hash:进行hash运算得出的结果是固定位数的(可hash的数据类型是不可变数据类型)      isinstance:判断数据类型,返回结果为布尔值

locals:显示局部变量            globals:显示全局变量           zip:序列中的元素一一对应显示

max/min :最大最小值(同一类型数据的元素才可以依次进行比较)   pow(a,b,c):a的b次方再除c取余

reverse:数据进行反转           chr:传入一个数值,根据ASCLL表输出对应字符      ord:传入一个字符,根据ASCALL表输出对应数值

round:四舍五入          slice:切片取值            sorted:通过比较大小进行排序         vars:无参数时与locals一样

import:导入模块,直接调用已有模块              -import-:字符串类型进行导入模块

猜你喜欢

转载自www.cnblogs.com/sakura-gyt/p/12749787.html