zoukankan      html  css  js  c++  java
  • Python:匿名函数

    没有名字的函数,不用写return,返回值就是该表达式的结果。

    语法:lambda 参数:方法(或三元运算)

    lambda x:x*x等同于
    def f(x):
    return x * x
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #普通函数
    def calc(x,y):
    if x > y:
    return x/y
    else:
    return x*y

    #匿名函数,想要调用必须赋一个变量
    func = lambda x,y: x/y if x>y else x*y #匿名函数最多只支持三元运算,再复杂的判断不支持

    print(calc(3,8))
    print(calc(16,8))
    print(func(3,8))
    print(func(16,8))
     结果:

    24
    2.0
    24
    2.0
    上面的例子好像看不出匿名函数和普通函数有什么区别,反而看上去会容易迷糊,那有什么用呢?

    有些时候,不需要显式地定义函数,直接传入匿名函数更方便。

    以map()函数为例:

    现在需要一个列表里的所有元素自乘

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    a = list(range(10))
    print(a)

    #普通方法
    for index,i in enumerate(a):
    a[index] = i*i
    print(a)

    #map()方法
    print(list(map(lambda x:x*x,a)))
     结果:

    复制代码
    #普通方法
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

    #map()方法
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    复制代码
    可以看出同一个需求显然用匿名函数更加简洁

    PS:map(func, *iterables)函数,第一个参数是个函数,第二个是用来操作的列表等元素集合

    总结:

    1、匿名函数不需要特意去定义一个函数名,可能这个函数只是某个地方临时用一下,后面就不会再用了

    2、匿名函数一般都是和其他方法搭配使用,使得代码更加简洁

  • 相关阅读:
    Codeforces Round #311 (Div. 2)
    hdu5441 并查集+克鲁斯卡尔算法
    hdu5439 二分
    hdu5422 最大表示法+KMP
    hdu3374 最大最小表示法 +kmp
    hdu2609最小表示法
    hdu4870 高斯消元
    关于并发编程是使用synchronized,lock?
    关于项目中遇到的问题-- trycatch 手动回滚事务
    关于项目中遇到的问题-- 请求接收的参数发生改变情况
  • 原文地址:https://www.cnblogs.com/bailo/p/9154416.html
Copyright © 2011-2022 走看看