美文网首页
python高阶函数

python高阶函数

作者: 探索1者 | 来源:发表于2019-03-02 19:20 被阅读0次

    lamaba函数
    定义:只能包含一条表达式且直接返回表达式的值
    作用:省去函数的命名,可以随时创建和销毁,有利于减少程序的耦合度

    fx = lambda n: (n**2+1)%5==0
    fx = lambda n: True if (n**2+1)%5==0 else False
    lambda x,y: x if x>y else y
    

    eval 函数
    作用:把一个字符串当表达式来执行,返回表达式执行后的结果
    格式:eval(source, global=None, local=None)

    s = '1+2*3'
    v = eval(s)# v = 7
    print(v)# 7
    #================================
    x = 100
    y = 200
    s = "x+y"
    v = eval(s) # 300
    #=================================
    eval('lambda: print("hello")')
    

    exec 函数
    作用:把一个字符串当程序来执行,返回表达式执行后的结果
    格式:exec(source, global=None, local=None)

    s = "x=100\ny=200\nprint(x+y)"
    exec(s)# 300
    

    map函数 filter函数

    L1 = list(filter(lambda n:n%2==1,range(1,20)))
    print(L1)# [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
     L2 = list(map(lambda n:n%2==1,range(1,20)))
    print(L2) #[True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True]
    # 这里如果用filter的话,说明匿名函数lambda给出的是个筛选条件,从
    # 1到19中筛选出奇数来,但这里如果用map的话,就好像变成了它判断
    # 对错的条件,只打印true和false。
    
    # 而map一般的用法如下,参数有一个函数一个序列,将右边的序列经
    # 过左边的函数变换,生成新的序列。
    #==================================#
     L1 = list(map(lambda n:n*n,range(1,20)))
    # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361]
    
    

    enumerate函数
    语法格式:enumerate(iterable, start=0)

    l = enumerate("ABC", 100)
    print(l) # <enumerate object at 0x7fa155288318>
    for i in l:
        print(i)
    # 结果如下:
    # (100, 'A')
    # (101, 'B')
    # (102, 'C')
    

    相关文章

      网友评论

          本文标题:python高阶函数

          本文链接:https://www.haomeiwen.com/subject/bqlyuqtx.html