【问题标题】:Python lambda if statement - do you have to have else?Python lambda if 语句 - 你必须有别的吗?
【发布时间】:2021-01-18 15:42:51
【问题描述】:

例如说我有下面的列表,我想只打印出 #s - 我想使用 lambda。 我的问题是我需要在 if 中有 else 吗?

_l = [1, 2, 3, 4, 5, 6]
_l2 = list(map(lambda x: x if x % 2 == 0 else "", _l))

我不想使用 else ...

【问题讨论】:

  • 你为什么要问我们?当你尝试它时发生了什么?如果您不知道您的代码是否有效,那么您还没有 Stack Overflow 问题。
  • 我也可以这样做 _l = [1,2,3,4,5,6,7,8,9,10] _l2 = list ( map ( lambda x : x if x%2 == 0 else None, _l)) _l3 = list(filter(None, _l2)) print(_l3)
  • 条件表达式 require 一个 else。但听起来您想过滤赔率?因为你不能filtermap,不管你是使用lambda 还是使用条件表达式。函数必须返回something,因此如果您map,您将始终获得与原始列表具有相同数量元素的列表。
  • 所以这个问题似乎是关于map,基本上

标签: python dictionary lambda


【解决方案1】:

这不是if 无论如何声明,它是一个条件表达式。 Python 条件表达式的格式为 z if x else y,所以是的,您确实需要 else

但是,您似乎只是在尝试过滤列表,因此如果您想要单行,请使用带有if 片段的列表推导:

l2 = [x for x in l if x % 2 == 0]

【讨论】:

  • 或者因为他们坚持使用lambda,filter(lambda x%2 == 0, l)
【解决方案2】:

如果您在列表理解方面遇到困难,可以使用filter。如果您坚持使用lambda 并想编写函数式编程,可能会更容易掌握。

_l2 = list(filter(lambda x: (x % 2 == 0), _l))

【讨论】:

    【解决方案3】:

    谢谢大家 - 我可以定义使用列表理解也可以使用过滤器 - 这就是我所做的(发布在评论中)。

    我想我真正要问的是我可以在没有 else 的情况下在 lambda 中使用 if 语句吗?

    所以对于上面是的,我使用了过滤器 - 从根本上说:

    _l = [x 范围内的 x (0,100,1)]

    _l2 = list (map (lambda x:x if x%2 == 0 else None, _l))

    _l3 = 列表(过滤器(无,_l2))

    但我的问题是是否我需要其他?

    谢谢

    【讨论】:

      猜你喜欢
      • 2015-06-20
      • 2023-04-07
      • 1970-01-01
      • 2010-12-28
      • 1970-01-01
      • 2015-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多