何时以及为什么将Lambda函数映射到列表

2024-04-29 01:58:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为一个数据科学训练营准备一门课程,在课程的早期,我就复习了Lambda关键字、MapFilter函数。它提供了语法和如何使用它,但我正在寻找上下文的原因和时间。以下是他们的解决方案示例:

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行解决方案变成了一个多部分函数。这是我的风格还是我应该做的


Tags: 数据lambda函数mapreturnvaluelineerror
1条回答
网友
1楼 · 发布于 2024-04-29 01:58:37

就我个人而言,一张lambda地图让我恶心。只需使用generator expression!而lambda的映射列表更糟糕,因为它可能是一个list comprehension

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]

这就是说,lambdamapfilter有很好的用途,但通常不能组合使用。甚至list(map(...))也可以根据上下文而定,例如,将字符串列表转换为整数列表:

[int(x) for x in list_of_strings]
list(map(int, list_of_strings))

这些都是清晰明了的,所以真正要考虑的是人们读你的代码是否熟悉^ {CD2>}。

一旦你通过了训练营,请记住mapfilteriteratorslazy evaluation,因此如果你只是在它们上面循环,而不是构建一个列表,那么出于性能原因,它们实际上更可取,尽管生成器的性能也一样


顺便说一句,次要更正:lambda是一个关键字,而不是一个函数

相关问题 更多 >