zoukankan      html  css  js  c++  java
  • Python

    本章内容

    1. 匿名函数lambda
    2. 匿名函数运用

    一、匿名函数lambda

    我们所说的匿名函数就是lambda , lambda到底是什么?

    lambda是一个表达式 , 而并非语句 , 所以可以出现在def语句所不能出现的位置 , 并且不需要指定函数名; lambda表达式还可以提高代码的可读性 , 简化代码

    lambda表达式主要用于写一些简单的方法 , 对于复杂的还是用函数写的好

    示例:

     1 # 普通函数
     2 def func(x):
     3     return x * x
     4 print(func(5))
     5 -----------------------
     6 # 匿名函数,自带return功能
     7 func = lambda x : x * x
     8 print(func(5))
     9 ---------------------------------------------------
    10 func = lambda arguments : expression using argument 

    使用匿名函数可以减少命名空间使用内存 , 因为没有函数名

    可直接后面传递参数

    1 >>> (lambda x,y : x if x > y else y)(1,2)
    2 2

     非固定参数

    1 >>> (lambda *args : args)(1,2,3,4)
    2 (1, 2, 3, 4)

    PS : 匿名函数主要是与其他函数搭配使用

    二、匿名函数运用

    结合使用

    map , 计算平方

    1 # map后返回的对象为map对象,所以利用list方法进行强转
    2 >>> list(map(lambda x : x * x, [1,2,3,4]))
    3 [1,4,9,16]

    filter , 筛选偶数

    1 >>> list(filter(lambda x : x % 2 == 0,[1,2,3,4]))
    2 [2,4]

    reduce , 求和

    1 # python3中已经没有reduce方法了,调用需要导入
    2 >>> from functools import reduce
    3 # reduce(function, sequence, initial=None)
    4 >>> reduce(lambda x , y : x + y, [1,2,3,4,5],100)
    5 115

    嵌套使用

    版本一

    1 def func(x):
    2     return lambda x : x + y
    3 f = func(2)
    4 print(f(2))
    5 # output: 4

    版本二

    1 func = lambda x : (lambda y: x + y)
    2 y = func(1)
    3 y(2)
    4 # output: 3
  • 相关阅读:
    函数参数太多的一种简化方法
    laravel 获取所有表名
    使用 laravel 的 queue 必须知道的一些事
    git "refusing to merge unrelated histories" 解决方法
    使用 xhprof 进行 php 的性能分析
    php 性能优化
    js原生实现轮播图效果(面向对象编程)
    nextSibling 和nextElementSibling
    如何在页面中使用svg图标
    svg动画 animate
  • 原文地址:https://www.cnblogs.com/lyonyang/p/7282124.html
Copyright © 2011-2022 走看看