zoukankan      html  css  js  c++  java
  • python基础 匿名函数

    filter用法

    filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

    #要从一个list [1, 4, 6, 7, 9, 12, 17]中删除偶数,保留奇数,首先,要编写一个判断奇数的函数:
    def is_odd(x):
        return x % 2 == 1
    filter(is_odd, [1, 4, 6, 7, 9, 12, 17]) #然后,利用filter()过滤掉偶数

    利用filter(),可以完成很多有用的功能,例如,删除 None 或者空字符串:

    def is_not_empty(s):
        return s and len(s.strip()) > 0
    filter(is_not_empty, ['test', None, '', 'str', '  ', 'END'])
    #s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。
    #当rm为空时,默认删除空白符(包括'
    ', '
    ', '	', ' '),如下:
    
    a = ' 123'
    a.strip()
    '123'
    
    a = '		123
    '
    a.strip()
    '123'

    map用法

    Python中的map函数应用于每一个可迭代的项,返回的是一个结果list。如果有其他的可迭代参数传进来,map函数则会把每一个参数都以相应的处理函数进行迭代处理。map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。

    有一个list, L = [1,2,3,4,5,6,7,8],我们要将f(x)=x^2作用于这个list上,那么我们可以使用map函数处理。

    >>> L = [1,2,3,4,] 
    >>> def pow2(x): 
    ... return x*x 
    ... 
    >>> map(pow2,L) 
    [1, 4, 9, 16] 

    匿名函数

    匿名函数:为了解决那些功能很简单的需求而设计的一句话函数

    #这段代码
    def calc(n):
        return n**n
    print(calc(10))
     
    #换成匿名函数     函数名 = lambda 参数:返回值
    calc = lambda n:n**n
    print(calc(10))
    参数可以有多个,用逗号隔开。
    匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值。 返回值和正常的函数一样可以是任意数据类型。
    #请把以下函数变成匿名函数
    def add(x,y):
        return x+y
    
    
    
    add = lambda x,y:x+y
    print(5,20)

    上面是匿名函数的函数用法。除此之外,匿名函数也不是浪得虚名,它真的可以匿名。在和其他功能函数合作的时候

    l=[3,2,100,999,213,1111,31121,333]
    print(max(l))
    
    dic={'k1':10,'k2':100,'k3':30}
    
    
    print(max(dic))
    print(dic[max(dic,key=lambda k:dic[k])])
    res = map(lambda x:x**2,[1,5,7,4,8])
    for i in res:
        print(i)
    
    输出
    1
    25
    49
    16
    64
    res = filter(lambda x:x>10,[5,8,11,9,15])
    for i in res:
        print(i)
    
    输出
    11
    15

    带key=的函数   min max filter map sorted

     
  • 相关阅读:
    为什么不要用VSCODE来写Makefile
    JavaFX第三弹
    javaFX文件和文件夹选择器
    写了一个vsftpd的GUI
    在java中调用shell命令和执行shell脚本
    正交投影与斯密特正交化的好处
    Linux下安装软件
    C++中的仿函数
    C++中重载操作符[ ]
    使用斐波那契查找
  • 原文地址:https://www.cnblogs.com/soleZ/p/8204746.html
Copyright © 2011-2022 走看看