【问题标题】:Python: Filtering lists with lambdaPython:使用 lambda 过滤列表
【发布时间】:2020-04-03 17:31:18
【问题描述】:

编写一个 Python lambda 函数,该函数接受一个名为 my_list 的列表并返回一个仅包含相同顺序的偶数的列表。

我的解决方案:

f = list(filter(lambda x: (x % 2 == 0), my_list))
print(f)

我遇到了问题,因为我在网上做一个家庭作业问题,它在上面运行了各种测试用例,它说 my_list 没有定义。我明白为什么会这样,因为它不是......但似乎问题是在寻找一个广泛的功能,在这种情况下我不知道该怎么做。

2 个问题:

  1. 我的解决方案看起来正确吗?
  2. 如果是这样,我应该如何调整它以使作业接受各种输入?

【问题讨论】:

  • 您可以将任意整数列表分配给my_list 作为测试数据,例如my_list = [3, 7, 4, 1, 2]
  • 从你帖子的第一行,也许你正在寻找这样的东西? f = lambda lst: [x for x in lst if x % 2 == 0]你可以在任何整数列表上调用它。

标签: python list lambda filter


【解决方案1】:

它看起来不正确,因为f 不是lambda 函数而是list。 好的,它使用了lambda,但不是lambda

您可能需要编写如下内容:

f = lambda my_list: list(filter(lambda x: (x % 2 == 0), my_list))

或类似的。

例如:

f = lambda my_list: [x for x in my_list if x % 2 == 0]

应该也满足要求。


当然现在print(f) 会“打印函数”。

【讨论】:

    【解决方案2】:

    我正在网上做一个家庭作业问题,它运行各种测试用例

    您的功能实际上是正确的。但是,在线编码评估通常使用stdin 作为输入。 Python 使用input() 方法从stdin 中检索字符串。所以如果你想让你的提交接受各种输入,你可能需要添加这个。

    my_list = list(map(int, input().split(' ')))
    

    这将按空格字符' ' 将输入的字符串拆分为一个列表。然后,列表中的所有内容通过map 函数转换为整数。由于map函数的返回值不是列表,所以需要list方法将map结果转换为列表。新列表将保存到my_list 变量中。

    但是,同样,这取决于您的输入规范。如果您的输入规范是例如:"1, 2, 4, 5"。使用', ' 作为分割参数。

    【讨论】:

      猜你喜欢
      • 2021-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      相关资源
      最近更新 更多