Lambda 算子、过滤、缩减和映射,阿里后台开发

打印(temperatures_in_Fahrenheit )

打印(temperatures_in_Celsius )

输出:

[97.7, 98.60000000000001, 99.5, 100.4, 102.2]

[36.5, 37.00000000000001, 37.5, 38.00000000000001, 39.0]

在上面的例子中,我们没有使用 lambda。通过使用 lambda,我们不必定义和命名函数 fahrenheit() 和 celsius()。您可以在以下交互式会话中看到这一点:

C = [ 39.2 , 36.5 , 37.3 , 38 , 37.8 ]

F = list ( map ( lambda x : ( float ( 9 ) / 5 ) * x + 32 , C ))

打印( F )

输出:

[102.56, 97.7, 99.14, 100.4, 100.03999999999999]

C = list ( map ( lambda x : ( float ( 5 ) / 9 ) * ( x - 32 ), F ))

打印( C )

输出:

[39.2, 36.5, 37.300000000000004, 38.00000000000001, 37.8]

map() 可以应用于多个列表。列表不必具有相同的长度。map() 将其 lambda 函数应用于参数列表的元素,即它首先应用于具有第 0 个索引的元素,然后应用于具有第一个索引的元素,直到达到第 n 个索引:

a = [ 1 , 2 , 3 , 4 ]

b = [ 17 , 12 , 11 , 10 ]

c = [ - 1 , - 4 , 5 , 9 ]

列表(地图( lambda x , y , z : x + y + z , a , b , c ))

输出:

[17、10、19、23]

列表(地图( lambda x , y : x + y , a , b ))

输出:

[18, 14, 14, 14]

列表(地图( lambda x , y , z : 2.5 * x + 2 * y - z , a , b , c ))

输出:

[37.5, 33.0, 24.5, 21.0]

如果一个列表的元素比其他列表少,map 将在最短列表被消耗后停止:

a = [ 1 , 2 , 3 ]

b = [ 17 , 12 , 11 , 10 ]

c = [ - 1 , - 4 , 5 , 9 ]

列表( map ( lambda x , y , z : 2.5 * x + 2 * y - z , a , b , c ))

输出:

[37.5, 33.0, 24.5]

我们可以在上面的示例中看到,参数 x 从列表 a 中获取其值,而 y 从 b 中获取其值,而 z 从列表 c 中获取其值。

映射函数列表


上一章的 map 函数用于将一个函数应用于一个或多个可迭代对象。我们现在将编写一个函数,该函数将一系列函数(例如列表或元组等可迭代对象)应用于一个 Python 对象。

from math import sin , cos , tan , pi

def map_functions ( x , functions ):

“”" 将一个可迭代的函数映射到对象 x “”"

res = []

for func in functions :

res . append ( func ( x ))

return res

family_of_functions = ( sin , cos , tan )

print ( map_functions (pi , family_of_functions ))

输出:

[1.2246467991473532e-16, -1.0, -1.2246467991473532e-16]

之前定义的 map_functions 函数可以使用列表推导技术来简化,我们将在章节列表推导中介绍:

def map_functions(x, 函数):

返回 [ func(x) for func in 函数 ]

过滤

功能

过滤器(函数,序列)

提供了一种优雅的方法来过滤掉序列“序列”的所有元素,函数函数返回True。即,如果 item 包含在序列“sequence”中并且 function(item) 返回 True,则 filter(function, sequence) 的迭代器结果将生成一个 item。

换句话说:函数 filter(f,l) 需要一个函数 f 作为它的第一个参数。f 必须返回一个布尔值,即 True 或 False。此函数将应用于列表 l 的每个元素。只有 f 返回 True 元素才会被迭代器产生,也就是 filter(function, sequence) 的返回值。

在下面的例子中,我们首先过滤掉前 11 个斐波那契数列的奇数和偶数元素:

fibonacci = [ 0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 ]

odd_numbers = list ( filter ( lambda x : x % 2 , fibonacci ))

打印( odd_numbers )

输出:

[1, 1, 3, 5, 13, 21, 55]

even_numbers = list ( filter ( lambda x : x % 2 == 0 , fibonacci ))

打印( even_numbers )

输出:

[0, 2, 8, 34]

even_numbers = list ( filter ( lambda x : x % 2 - 1 , fibonacci ))

打印( even_numbers )

输出:

[0, 2, 8, 34]

减少列表


正如我们在教程本章的介绍中提到的。在迁移到 Python 3 时,reduce() 已从 Python 的核心中删除。 Guido van Rossum 讨厌 reduce(),我们可以从他在 2005 年 3 月 10 日在 artima.com 上发表的声明中了解到:

"So now reduce(). This is actually the one I've always hated most, because, apart from a few examples involving + or *, almost every time I see a reduce() call with a non-trivial function argument, I need to grab pen and paper to diagram what's actually being fed into that function before I understand what the reduce() is supposed to do. So in my mind, the applicability of reduce() is pretty much limited to associative operators, and in all other cases it's better to write out the accumulation loop explicitly."

功能

减少(功能,序列)

不断地将函数 func() 应用于序列 seq。它返回单个值。

如果 seq = [ s1, s2, s3, … , sn ],调用 reduce(func, seq) 的工作方式如下:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
img

(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

96.png#pic_center)

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

  • 15
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值