在python中有两种函数,一种是通过def得到的函数,一种是匿名函数,也就是lambda表达式。语法格式如下:

lambda argument_list:expersion

语法中的argument_list是参数列表,它的结构与Python中函数(function)的参数列表是一样的,比如:

a,b
a=1,b=2
*args
**kwargs
a,b=1,*args

....

语法中的expression是一个关于参数的表达式,表达式中出现的参数需要在argument_list中有定义,并且表达式只能是单行的。比如:

1
None
a+b
sum(a)
1 if a >10 else 0
......

应用1,求变量与整数的和,一般来说可以直接打印变量与整数,或者通过定义函数来实现,还可以通过lambda表达式来实现,代码如下:

 1 #直接打印
2 x = 2
3 print(x + 2)
4
5 #定义函数
6 def asum(x):
7 return x+2 #返回变量与2的和
8
9 a = asum(2) #调用函数,并传实参2,计算和
10 print(a) #4
11
12 #用lambda表达式写
13 b = lambda x:x+2 #撰写表达式并赋值给变量b
14 print(b(3)) #打印是否符合预期
15
16 #也可以这样写lambda表达式
17 c = (lambda x:x+2)(3) #在表达式后面直接跟x的值,并赋给变量c
18 print(c) #打印

2,将lambda表达式传递给其他函数结合使用:

  传递给filter

d = filter(lambda x:x%3==0,list(range(1,10))) #定义变量

print(list(d))

  传递给map

squares = map(lambda x:x**2,range(1,10))

print(list(squares))

  与sorted函数结合使用

1 e = [('b',3),('a',2),('d',4),('c',1)]
2 f = sorted(e,key=lambda x:x[0]) #按照列表e的第一个元素进行排序,也就是按照abcd
3 g = sorted(e,key=lambda x:x[1]) #按照列表e的第二个元素进行排序,也就是按照1234
4 print(e) #原始列表
5 print(f) #[('a', 2), ('b', 3), ('c', 1), ('d', 4)]
6 print(g) ##[('c', 1), ('a', 2), ('b', 3), ('d', 4)]

  与reduce函数结合使用

1 from functools import reduce
2 h = reduce(lambda a,b : '{},{}'.format(a,b),[1,2,3,4,5,6,7,8,9])
3 print(h)
4
5 j = reduce(lambda x,y : x+y, [1,2,3,4,5]) #等同于(((((1+2))+3)+4)+5)
6 print(j)

3,在函数内嵌套使用,lambda表达式做为返回值:

1 def increment(n):
2 return lambda x:x+n #返回lambda表达式
3
4 k = increment(5) #调用函数并赋值给变量k
5 print(k(2)) #理解为将2赋值给匿名函数里的x,结果为7

4,字符串联合:

l = (lambda x = 'bb', y = 'cc', z = 'aa' : x+y+z)

print(l('foo'))

5,判断字符串是否以某个字母开头:

1 names = ['Anne','amy','Bob','David','Carrie','Barbara','Zach']
2 b_names = filter(lambda x:x.startswith('B'),names)
3 print(list(b_names))

6,求两个列表元素序列和:

a = [1,2,3,4,5]

b = [5,6,7,8,9]

print(list(map(lambda x,y : x+y, a,b)))

7,求字符串中每个单词的长度:

sentence = "Welcome to Python world"
words = sentence.split()
lengths = map(lambda x:len(x),words)
print(list(lengths))

代码并无意义,仅供理解学习使用。

python lambda表达式应用的更多相关文章

  1. python lambda表达式简单用法【转】

    python lambda表达式简单用法 1.lambda是什么? 看个例子: g = lambda x:x+1 看一下执行的结果: g(1) >>>2 g(2) >>& ...

  2. Python lambda 表达式有何用处,如何使用?

    在看Python教程的时候,被 lambda 的解释给难住了,之前没有这么用过. 在<简明Python教程>上的解释: [摘录如下:] lambda语句被用来创建新的函数对象,并且在运行时 ...

  3. python lambda表达式与三元运算

    1.三元运算 格式: 为真时的结果 if 判定条件 else 为假时的结果 #!/usr/bin/python # -*- coding: UTF-8 -*- def f(x, y): # 如果x大于 ...

  4. python — lambda表达式与内置函数

    目录 1 lambda表达式 (匿名函数) 2 内置函数 1 lambda表达式 (匿名函数) 用于表示简单的函数 lambda表达式,为了解决简单函数的情况: def func(a1,a2): == ...

  5. python lambda表达式简单用法

    习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: 1 2 3 4 5 6 7 8 # 普通条件语句 if 1 == 1:     name = 'wupeiqi' else ...

  6. (21)python lambda表达式

    lambda表达式是一个匿名函数 通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用 最简单的例子 add = lambda x,y : x + y print add(3,5) #out ...

  7. python lambda表达式&map/filter/reduce

    习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: 1 2 3 4 5 6 7 8 # 普通条件语句 if 1 == 1:     name = 'wupeiqi' else ...

  8. python lambda表达式的两种用处

    1 用处1定义匿名函数 不带参数的: a = ") 带参数的 b = lambda x, y:x * y 2 当函数作为参数时,直接为该函数传参. def func1(m, n): retu ...

  9. PYTHON lambda表达式

    lambda相当于def定义函数     一一对应

随机推荐

  1. yii2.0 中数据查询中 or、in、between 及session的使用

    1 HTML: 2 3 <div> 4 <form class="form-inline " method="get" action=&quo ...

  2. Jmeter(二十八) - 从入门到精通 - Jmeter Http协议录制脚本工具-Badboy1(详解教程)

    1.简介 在使用jmeter自动录制脚本时会产生很多无用的请求,所以推荐使用badboy录制脚本之后保存为jmx文件,在jmeter中打开使用.因此宏哥在这里介绍一下Badboy这款工具,本来打算不做 ...

  3. jmeter录制请求

    用了一段时间的jmeter感觉比LR方便很多,界面也比较简洁,开源免费,配置环境也方便,LR简直没法比,但唯一的是功能没有LR强大,毕竟是免费的,要求别那么高. 下面开始进入正题,配置环境和下载就不多 ...

  4. 【Vue】VUE源码中的一些工具函数

    Vue源码-工具方法 /* */ //Object.freeze()阻止修改现有属性的特性和值,并阻止添加新属性. var emptyObject = Object.freeze({}); // th ...

  5. C语言项目——工程化编程的案例分析

    一.VSCode安装及环境配置 初始在Win下安装Mingw-w64/GCC 和 GDB,在VSCode下打开项目案例,发现在linktable中需要包含pthread头文件.此文件是基于Linux系 ...

  6. 基于struts2的记住账号密码的登录设计

    一个简单的基于struts2的登录功能,实现的额外功能有记住账号密码,登录错误提示.这里写上我在设计时的思路流程,希望大家能给点建设性的意见,帮助我改善设计. 登录功能的制作,首先将jsp界面搭建出来 ...

  7. CoProcessFunction实战三部曲之三:定时器和侧输出

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  8. 第3.6节 Python字符串基础知识

    一. 引言 前面第二章已经接单介绍了字符串,本来计划讲完列表解析和字典解析再来精讲字符串的内容,但发现要讲列表解析和字典解析需要介绍迭代器和生成器,这个概念比较复杂,老猿还需要复习和验证一下才能完全掌 ...

  9. 虚拟机(centos7)网络配置

    修改网络配置(ip等) VWware右上角,选择编辑---虚拟网络编辑器 可以看到子网ip是 192.168.1.0,那么我们分配ip地址就可以从此ip段开始. 再点击NAT设置 这里的网关我们稍后会 ...

  10. 云服务器AWD平台搭建

    开学后实验室来了几个新同学,在线上CTF方面大家一直在持续学习,但AWD模式的CTF我们练习并不多,所以准备搭建一个AWD平台用于实验室成员的线下赛攻防练习. 最开始的是防灾科技大学的线下AWD靶场: ...