• Python之匿名函数


    匿名函数指一类无须定义标识符的函数或子程序。Python用lambda语法定义匿名函数,只需用表达式而无需申明。

    lambda 函数是一种快速定义单行的最小函数,可以用在任何需要函数的地方

    常规版本:

    def fun(x,y)
        return x*y

    lambda版本:

    r = lambda x,y:x*y
    print r(2,3)
    格式:
      lambda 参数列表:return [表达式] 变量
      由于lambda返回的是函数对象(构建的是一个函数对象),所以需要定义一个变量去接收
     
    匿名函数优点:
      - 使用Python写一些脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。
      - 对于一些抽象的,不会被别的地方再重复使用的函数,有时候函数起个名字也是个难题,使用lambda不需要考虑命名的问题
      - 使用lambda在某些时候然后代码更容易理解
     
    搭配reduce的应用
      reduce(fun,list)
        reduce依次把list中的数字赋值给fun进行计算
        注意fun必须是连个数字间的运算,list必须是整型数字
     
    打印列表元素的平方
    for i in map(lambda x:x*x,[0,1,2,3,4]):
        print(i)     #0 1 4 9 16

    筛选长度大于3的字符串

    l1 = ['232','31231','21']
    func = lambda x:len(x)>3
    for i in filter(func,l1):
        print(i)

    现在有两元祖 (('a'),('b')),(('c'),('d')),请使用 python 中的匿名函数生成列表[{'a':'c'},{'b':'d'}]

    func = lambda x,y:[{x[0]:y[0]},{x[1]:y[1]}]
    tu1 =(('a'),('b'))
    tu2 = (('c'),('d'))
    l = func(tu1,tu2)
    print(l)    #[{'a': 'c'}, {'b': 'd'}]

    理解%r和%s的区别

    %r会重现所表达的对象,%s会将所有转成字符串

    eg1:

    print('i am %s years old' % 22)
    print('i am %r years old' % 22)
    >>>>>>>>>>>>>>>>>>>>>>>>
    i am 22 years old
    i am 22 years old

    eg2:

    t = 'i am %d years old' % 22
    print('i said %s' % t)
    print('i said %r' % t)
    >>>>>>>>>>>>>>>>>>>>>>>>
    i said i am 22 years old
    i said 'i am 22 years old'

    eg3:

    import datetime
    d = datetime.date.today()
    print('%s' % d)
    print('%r' % d)
    >>>>>>>>>>>>>>>>>>>>>>>>
    2017-6-26
    datetime.date(2017, 6, 26)

    sorted与.sort()区别

    Sorted(效率高,用C语言写的) 返回的是列表,

    排序完形成新列表,并返回

    list.sort()改变原列表

  • 相关阅读:
    算法导论笔记:13-01红黑树概念与基本操作
    算法导论笔记:12二叉搜索树
    ansible使用9-Playbooks: Special Topics
    ansible使用8-Best Practices
    ansible使用7-Loops
    ansible使用6-Conditionals
    ansible使用5-Variables
    ansible使用4-Playbook Roles and Include Statements
    ansible使用3-playbook
    ansible使用2-inventory & dynamic inventory
  • 原文地址:https://www.cnblogs.com/strive-man/p/8433832.html
Copyright © 2020-2023  润新知