【问题标题】:Can filter() contain two conditions?filter() 可以包含两个条件吗?
【发布时间】:2019-05-11 16:47:01
【问题描述】:

我可以使用 filter() 来包含多个条件吗?例如,如果我有这样的代码。

nums = [3, 7, 10, 29, 39, 55, 67, 77, 107]
res = list(filter(lambda x: x > 60, nums))
print(res)

如何使用过滤器来包含大于 60 和小于 20 的数字?

【问题讨论】:

  • 您听说过and 运算符吗? (或链式比较,但and 更重要的是要知道。)
  • 那么 {lambda x: x > 60 and
  • s/and/or 然后是的
  • (发现潜在的未来问题。)将人类语言翻译成逻辑时要小心 - 虽然有大于 60 和小于 20 的数字,但没有大于 60 和小于20.

标签: python list filter functional-programming


【解决方案1】:

您不应该使用过滤器,而是使用列表理解

[x for x in nums if x < 20 or x > 60]

你可以用过滤器做同样的事情,但它会很麻烦

list(filter(lambda x: x < 20 or x > 60, nums))

【讨论】:

  • 我感觉列表理解会更合适。
【解决方案2】:

Chained comparisons 在这里可能适合使用列表理解:

[x for x in nums if not 20 <= x <= 60]

【讨论】:

    猜你喜欢
    • 2014-08-01
    • 1970-01-01
    • 2014-04-21
    • 2021-11-20
    • 2013-09-03
    • 2016-06-11
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    相关资源
    最近更新 更多