python:lambda匿名函数,高效的表达方式

简介: 在平时做python作业时总会用到这几个函数,今天来做个总结1.lambda函数:

在平时做python作业时总会用到这几个函数,今天来做个总结

1.lambda函数:

在平时编写简单的程序时这个函数非常好用,什么找偶数,取掉一些特殊的数字,一些题目无理的要求,它都很好用。今天简单整理一下他的用法:

先看看菜鸟

python 使用 lambda 来创建匿名函数。

所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

lambda 只是一个表达式,函数体比 def 简单很多。

lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。 lambda

函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

lambda函数的语法只包含一个语句:

lambd(arg1,(,arg2,…argn)):expression

他的格式呢很好理解,直接上代码一目了然(这里用的map,filter后面都会讲到的~)

re=list(map(lambda x,y:x+y,[1,2,3],[2,3,4]))#当运算符号为%时表示判断
print(re)
re=list(map(lambda x:x**2,range(1,5)))#当运算符号为%时表示判断
print(re)

这个代码的另一种形式为

def square(x):
    return x**2
result = list(map(square,[1,2,3,4,5]))
print(result)

lambda的简洁的写法是不是更简单更有逼格呢~

再举一个栗子:

先写复杂的形式吧(没有对比就没有伤害)

def is_odd(n):
    return n % 2 == 1
tmplist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
newlist = list(tmplist)
print(newlist) 

看好了lambda的代码:

tmplist = list(filter(lambda n:n%2==0,range(1,11)))#上一个代码的简写,偶数找出来
print(tmplist)

两行解决战斗,其实也可以一行

print(list(filter(lambda n:n%2==0,range(1,11))))

是不是惊呆了~~

先解释一下这个代码吧:filter是可以理解为过滤的意思,只要是在0~10的数能被2除余数为0那么就选出来,然后range完后就能打印出偶数了,后面详解。

所以完成一些加减乘除不用def直接lambd就可以了,节省时间(人生苦短,我用python)

再再就一个栗子

import math
new=list(filter(lambda x:math.sqrt(x)%1==0,range(1,101)))#选出平方根是整数的数字
print(new)

lambda我还没学怎么深入,以后再补充

2.map函数:

先看菜鸟解释:

map() 会根据提供的函数对指定序列做映射。

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

map(function, iterable, …)

function – 函数

iterable – 一个或多个序列

也就是将一个函数用在需要用的地方

def square(x):
  return x**2
result=list(map(square,[1,2,3,4,5]))
print(result)
re=list(map(lambda x:x**2,range(1,5)))#当运算符号为%时表示判断
print(re)

这两个就能很好的对比lambda的与def函数的用法

并且map与fliter返回的都是生成器(generator),

re=(map(lambda x,y:x+y,[1,2,3],[2,3,4]))#当运算符号为%时表示判断
print(re)

运行结果

<map object at 0x00000214383AADC8>

也就是可以for遍历出值:

re=map(lambda x:x**2,range(1,5))#当运算符号为%时表示判断
for i in re :
    print(i,end=' ')

还有许多神奇的用法,大家可以去探索哦

3.filter函数:

菜鸟:

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。

该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

语法

以下是 filter() 方法的语法:

filter(function, iterable)

上面已经有许多栗子了,这里简单举一个

a=sum(list(filter(lambda x:x*x,range(1,5))))
print(a)

运行过的小伙伴会发现,返回值为:1,2,3,4

为什么会这样呢,因为filter会进行一个判断,就不会进行x*x这个步骤

如果我们这样:

print(list(filter(lambda x:x*x==x*3,range(1,5))))

会以列表形式(因为我用的list)得到这个值[3]因为只有3这个值满足,所以返回3,这是我的理解,希望大家能够有更好的想法 ,也可以告诉我哦.还有filter只能用一个可迭代对象,我试过两个却报错了。可能它这个函数参数只能有一个吧,有兴趣的可以去研究一下哦。

4.reduce函数的用法:

reduce() 函数会对参数序列中元素进行累积。

函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第

1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

注意:Python3.x reduce() 已经被移到 functools 模块里,如果我们要使用,需要引入 functools 模块来调用

reduce() 函数:

from functools import reduce

reduce() 函数语法: reduce(function, iterable[, initializer])

function – 函数,有两个参数

iterable – 可迭代对象

initializer – 可选,初始参数

当然这个函数也可以和lambda联动的哦~

from functools import reduce#reduce需要调用
a=reduce(lambda x,y:x+y,range(1,5))
print(a)

结果等于1+2+3+4=10

reduce用于循环的做一件事左参数为累加值,右参数为序列值,并在序列为空时用作默认值。

相关文章
|
4月前
|
缓存 前端开发 JavaScript
使用 aws lambda 时,开发人员面临的常见挑战之一是管理大型 python 依赖项。
在我们快速发展的在线环境中,只需几秒钟加载的网站就能真正脱颖而出。您是否知道加载时间较快的网站的转化率比加载时间较长的网站高出三倍?
60 0
使用 aws lambda 时,开发人员面临的常见挑战之一是管理大型 python 依赖项。
|
4月前
|
存储 JSON 网络安全
使用 EFS 在 AWS Lambda 上安装 Python 依赖项
使用 aws lambda 时,开发人员面临的常见挑战之一是管理大型 python 依赖项。
56 1
|
4月前
|
弹性计算 安全 数据处理
Python高手秘籍:列表推导式与Lambda函数的高效应用
列表推导式和Lambda函数是Python中强大的工具。列表推导式允许在一行代码中生成新列表,而Lambda函数则是用于简单操作的匿名函数。通过示例展示了如何使用这些工具进行数据处理和功能实现,包括生成偶数平方、展平二维列表、按长度排序单词等。这些工具在Python编程中具有高度的灵活性和实用性。
70 2
|
5月前
|
程序员 Python
Python中Lambda表达式的优缺点及使用场景
Python中Lambda表达式的优缺点及使用场景
148 0
|
5月前
|
存储 算法 API
Python学习五:函数、参数(必选、可选、可变)、变量、lambda表达式、内置函数总结、案例
这篇文章是关于Python函数、参数、变量、lambda表达式、内置函数的详细总结,包含了基础知识点和相关作业练习。
78 0
|
6月前
|
Python
Python中几种lambda排序方法
【9月更文挑战第7天】在Python中,`lambda`表达式常用于配合排序函数,实现灵活的数据排序。对于基本列表,可以直接使用`sorted()`进行升序或降序排序;处理复杂对象如字典列表时,通过`lambda`指定键值进行排序;同样地,`lambda`也适用于根据元组的不同位置元素来进行排序。
289 1
深入浅出python的lambda表达式
今天我们来聊聊Python中一个常用的特性 - lambda表达式。别被这个听起来很高大上的名字吓到,其实它就是个匿名函数的实现机制。
|
7月前
|
Python
Python中的Lambda表达式
Python中的Lambda表达式
|
7月前
|
Python
Python 中的 Lambda 函数是什么?
【8月更文挑战第29天】
92 0
|
7月前
|
运维 Java API
探索Java中的Lambda表达式自动化运维的魔法:如何利用Python脚本提升效率
【8月更文挑战第29天】Lambda表达式是Java 8中引入的一个新特性,它允许我们将功能作为方法参数,或者代码作为数据来处理。在这篇文章中,我们将深入探讨Java中的Lambda表达式,包括它的语法、使用场景以及如何在实际编程中应用它。我们将通过一些简单的示例来演示Lambda表达式的强大功能和灵活性,让你更好地理解和掌握这一新特性。

热门文章

最新文章