【问题标题】:When do you use the Lambda function? And why usually user with map(), filter() function? [closed]您什么时候使用 Lambda 函数?为什么通常用户使用 map()、filter() 函数? [关闭]
【发布时间】:2019-11-18 15:53:39
【问题描述】:

我研究了 lamda 函数可以立即使用并在需要的地方丢弃。 map、filter和lamda是什么关系?

wins = map(lambda x : 'img' + str(x), range(5))
wins = list(wins)

【问题讨论】:

  • mapfilter 没有任何关系,除了 lambda 表达式可以产生适合 mapfilter 的第一个参数的值。跨度>
  • lambda 用于制作“一次性”功能,您可能只需要真正使用一次,之后就不必关心了。而已。 map 和 filter 接受“函数”作为参数之一。这基本上就是它们与 lambda 的关系程度,没有真正的理由为什么 map 或 filter 必须特别使用 lambdas。如果有意义,则使用 lambda,否则使用传统函数。
  • 我也会挑战“通常与地图一起使用”,我从不使用地图/过滤器,但使用大量的 lamdas
  • @Chris_Rands 除了被认为 lambda 表达式和 def 语句产生根本不同的对象的人使用的术语之外,没有这样的东西。

标签: python function dictionary filter


【解决方案1】:

lambda 通常在有更好/更有效的解决方案时使用。虽然有些地方可以使用lambda,但这不是最有效的或 Pythonic 的解决方案。

我建议在这里使用列表理解,因为它对于您正在做的事情更具可读性和效率。

>>> wins = [f'img{n}' for n in range(5)]
>>> wins
['img0', 'img1', 'img2', 'img3', 'img4']

如果您的 python 版本不支持f-strings,请使用str.format

wins = ['img{}'.format(n) for n in range(5)]

或者,如果您想使用map,那么str.format 也可以在这里使用:

wins = list(map('img{}'.format, range(5)))

【讨论】:

  • 不同意,lambda 有很多有效用途,例如作为sorted()itertools.groupby() 等的关键功能。
  • 我没有说它没有它的用​​途,但在这里绝对没有必要。我指的是当有更好的选择时使用它的次数。
  • 将“通常”替换为“经常”,我会更同意这一点。 lambda 表达式被过度使用,无论是在列表推导更可取时将其与 map 配对,还是在用于围绕可以更有效地使用自身的事物添加间接层(例如,lambda x: int(x) 而不是只需int)。
  • 抱歉,我一定是措辞错误。通常是一个更好的词@chepner!谢谢,这是我最初的意图
猜你喜欢
  • 1970-01-01
  • 2010-09-06
  • 2011-03-16
  • 2010-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多