python 函数式编程

摘要:函数式编程lambda,map,reduce,filter的应用。其具有三大特性:不可变数据,函数可以像变量一样使用,尾递归优化,每次递归都重用stack。优点在于:并行,惰性求值,确定性。


from functools import  reduce
import random

# 函数式编程
def inc(x):
    def incx(y):
        return x*y
    return incx

def  inc_test():
    inc2=inc(2)
    print(1,inc2(6))  # 1 12
    inc4=inc(9)
    print(2,inc4(4))  # 2 36


# 匿名函数 lambda: 快速定义单行的最小函数
def lambda_test():
    gg=lambda x:x*x
    print(1,gg(2)) # 1 4
    print(2,(lambda x:x*x)(3)) # 2 9

def map_test():
    data=['xdsl','huaw','xiaoming','wangwu']
    for i in data:
        print(len(i))
    print("=======================")
    res_len=list(map(len,data))
    print(res_len) # [4, 4, 8, 6]
    dataUp=list(map(toUpper,data))
    print(3,dataUp)  # 3 ['XDSL', 'HUAW', 'XIAOMING', 'WANGWU']
    dataUp1=list(map(lambda x:x.upper(),data))
    print(4,dataUp1) # 4 ['XDSL', 'HUAW', 'XIAOMING', 'WANGWU']
    items=list(range(1,6))
    squared=list(map(lambda x:x**2,items))
    print(5,squared) # 5 [1, 4, 9, 16, 25]

def toUpper(item):
    return  item.upper()

def filter_test():
    number=list(range(-10,10))
    less_zero=list(filter(lambda x:x<0,number))
    print(1,less_zero) # 1 [-10, -9, -8, -7, -6, -5, -4, -3, -2, -1]

def reduce_test():
    number=list(range(1,8))
    addnumber=reduce(lambda x,y:x+y,number)
    print(1,addnumber)  # 1 28
    addnumber1=reduce(lambda x,y:x+y,number,10)
    print(2,addnumber1)  # 2 38

def function_test():
    number=[random.randint(-10,10) for i in range(10)]
    print(number)  # [-2, 5, 8, 8, 2, -6, -1, -6, -8, -3]
    positive_number=list(filter(lambda x:x>0,number))
    average=reduce(lambda x,y:x+y,positive_number)/len(positive_number)
    print(average) # 5.75


if __name__ == '__main__':
    function_test()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值