我正在为Data Science训练营准备一个预备课程,它遍历了Lambda
关键字,Map
并且Filter
在该课程的早期就开始起作用了。它为您提供语法以及如何使用它,但是我在寻找为什么和何时使用上下文。以下是其解决方案的示例:
def error_line_traces(x_values, y_values, m, b):
return list(map(lambda x_value: error_line_trace(x_values, y_values, m, b, x_value), x_values))
我感觉好像每次我将他们的解决方案都交给实验室时一样,我已经将单行return
解决方案变成了多部分功能。是这种风格还是我应该做的事情?
就个人而言,一张lambda的地图使我感到恶心。只需使用生成器表达式!而且一个lambda映射的列表甚至更糟,因为它可能是列表理解!
def error_line_traces(x_values, y_values, m, b):
return [error_line_trace(x_values, y_values, m, b, x) for x in x_values]
看那是多少更短更清晰!
lambda的过滤器也可以重写为一种理解。例如:
list(filter(lambda x: x>5, range(10)))
[x for x in range(10) if x>5]
这就是说,有良好的用途lambda
,map
和filter
,但通常不结合。list(map(...))
根据上下文,Even也可以,例如将字符串列表转换为整数列表:
[int(x) for x in list_of_strings]
list(map(int, list_of_strings))
这些内容既清晰又简洁,因此实际上唯一需要考虑的是阅读您的代码的人是否会熟悉map
。
一旦你过去的训练营,请记住,map
和filter
是迭代器,并做懒的评价,因此,如果你只遍历他们,而不是建立一个列表,他们是出于性能方面的实际优选但发电机执行一样好。
顺便说一句,次要更正:lambda
是关键字,而不是函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句