python之lambda函数

 lambda函数又称为匿名函数,匿名函数就是没有函数名的函数。


1

2

>>> lambda x,y:x+y

<function <lambda> at 0x7f0f0dd85578>

  x,y是函数的两个变量,位于冒号的左边,冒号右边的表达式是函数的返回值。


1

2

3

4

5

>>> add =lambda x,y:x+y

>>> add

<function <lambda> at 0x7f0f0dd855f0>

>>> add(1,2)

3

  等同于函数


1

2

3

def add(x,y):

    return x+y

add(1,2)

  lambda的使用场景


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

1.函数式编程

#例如:一个整数列表,要求按照列表中元素的绝对值大小升序排列

list1 = [3,5,-4,-1,0,-2,-6]

print(sorted(list1,key=abs))

print(sorted(list1,key=lambda x:abs(x)))

2.python中最常见的filter筛选、map小刷子、reduce合并,都可以用lambda表达式来生成。对于序列来讲,有三个函数式编程工具:filter()、map()、reduce()

map(function,sequence):把sequence中的值当参数逐个传给function,返回一个包含函数执行结果的list。如果function有两个参数,即map(function,sequence1,sequence2)。

#求1~20的平方

print(list(map(lambda x:x**2,range(1,21))))

#[1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400]

filter(function,sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)返回。

#求1~20之间的偶数

print(list(filter(lambda x:x%2 == 0,range(1,21))))

#[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

reduce(function,sequence):function接收的参数个数只能为2,先把sequence中第一个值和第二个值当参数传给function,再把function的返回值和第三个值当参数传给function,然后只返回一个结果。

#求1~100之和

from functools import reduce

print(reduce(lambda x,y:x+y,range(1,101)))

#5050

#求1~100之和,再加上10000

from functools import reduce

print(reduce(lambda x,y:x+y,range(101),10000))

#15050

3.闭包

一个定义在函数内部的函数,内部函数使用了外部函数的临时变量,并且外部函数的返回值是内部函数的引用。

def outer(a):

    b=10

        def inner(): # 内部函数

            print(a+b)

        return inner # 外函数的返回值是内函数的引用

outer(5)

原文地址:https://www.cnblogs.com/valorchang/p/11282092.html

时间: 2024-08-28 19:10:57

python之lambda函数的相关文章

Python的lambda函数与排序

Python的lambda函数与排序 2010-03-02 15:02 2809人阅读 评论(0) 收藏 举报 lambdapythonlistlispclass工作 目录(?)[+] 前几天看到了一行求1000的阶乘的Python代码: print    reduce ( lambda    x , y : x * y ,    range ( 1 ,    1001 )) 一下子被python代码的精简 与紧凑所折服,故对代码进行了简单的分析. reduce与range都是Python的内置

python 使用lambda函数 和 list comprehension

python 使用lambda函数 学习资源 lambda函数学习 list comprehension 多维数组初始化 lambda 函数 Python 支持一种有趣的语法,它允许你快速定义单行的最小函数.这些叫做 lambda 的函数,是从 Lisp 借用来的,可以用在任何需要函数的地方. def f(x): return x*2,用lambda函数来替换可以写成:g = lambda x: x*2`g(3)结果是6.(lambda x: x*2)(3)`也是同样的效果. 这是一个 lamb

细说Python的lambda函数用法,建议收藏

细说Python的lambda函数用法,建议收藏 在Python中有两种函数,一种是def定义的函数,另一种是lambda函数,也就是大家常说的匿名函数.今天我就和大家聊聊lambda函数,在Python编程中,大家习惯将其称为表达式. 1.为什么要用lambda函数? 先举一个例子:将一个列表里的每个元素都平方. 先用def来定义函数,代码如下 def sq(x): return x*x map(sq,[y for y in range(10)]) 再用lambda函数来编写代码 map(la

python笔记-lambda函数、sorted函数、map函数

1.lambda函数:又称匿名函数,示例如下: def f(x): return x**2 print f(4)  #16 g = lambda x:x**2 print g(4)  #16 2.map函数 print map(lambda x:x**2,range(10)) #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 3.sorted函数 dict = {9:2,4:3,6:9,'a':'test','e':'fff','*':'$'} print sorted

python之Lambda函数---笔记

<Python3 程序开发指南> Lambda函数,是一个匿名函数,创建语法: lambda parameters:express parameters:可选,如果提供,通常是逗号分隔的变量表达式形式,即位置参数. expression:不能包含分支或循环(但允许条件表达式),也不能包含return(或yield)函数.如果为元组,则应用圆括号将其包含起来. 调用lambda函数,返回的结果是对表达式计算产生的结果. 根据参数是否为1 决定s为yes还是no >>> s =

python的lambda函数

例1:传入多个参数的lambda函数 def sum(x,y): return x+y 用lambda来实现: p = lambda x,y:x+y print(p(4,6)) 例2:传入一个参数的lambda函数 a=lambda x:x*x print(a(3)) 例3:多个参数的lambda形式: a = lambda x,y,z :(x+8)*y-z print(a(5,6,8)) 要点:1.lambda 函数不能包含命令, 2.包含的表达式不能超过一个. 3.lambda匿名函数的格式

Python编程中自定义Lambda函数的使用场景

Python 中定义函数有两种方法,一种是用常规方式 def 定义,函数要指定名字,第二种是用 lambda 定义,不需要指定名字,称为 Lambda 函数. Lambda 函数又称匿名函数,匿名函数就是没有名字的函数,函数没有名字也行?当然可以啦.有些函数如果只是临时一用,而且它的业务逻辑也很简单时,就没必要非给它取个名字不可. 好比电影里面的群众演员,往往他们的戏份很少,最多是衬托主演,跑跑龙套,他们需要名字吗?不需要,因为他们仅仅只是临时出镜,下次可能就用不着了,所以犯不着费心思给他们每个

Python的lambda匿名函数

lambda函数也叫匿名函数,即,函数没有具体的名称.先来看一个最简单例子: def f(x):return x**2print f(4) Python中使用lambda的话,写成这样 g = lambda x : x**2print g(4) lambda表达式在很多编程语言都有对应的实现.比如C#: var g = x => x**2Console.WriteLine(g(4)) 那么,lambda表达式有什么用处呢?很多人提出了质疑,lambda和普通的函数相比,就是省去了函数名称而已,同

Python中的lambda函数

今天在看书的时候,看到了这样的一条语句: if isinstance(value,int) or isinstance(value,float): split_function=lambda row:row[column]>=value 对其中的lambda这个函数表示很不明白,于是看了看Python文档,文档中解释如下:   lambda An anonymous inline function consisting of a single expression which is evalua