【问题标题】:why does filter + abs functions not give correct value为什么 filter + abs 函数没有给出正确的值
【发布时间】:2020-06-13 18:08:14
【问题描述】:
numbers = list(range(-10,10))
print(numbers)
newnum = filter(abs,numbers)
print(list(newnum))
print(abs(-10))

输出如下

[-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5, 6, 7, 8, 9]
10

我认为它应该如下所示

[-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9]
10

我哪里错了?

【问题讨论】:

    标签: python-3.x filter absolute-value


    【解决方案1】:

    filter 方法在一个函数的帮助下过滤给定的序列,该函数测试序列中的每个元素是否为真。
    abs(x) 返回数字的绝对值。

    发生了什么?

    • numbers 列表中的每个值都传递给 abs 函数,该函数仅在 abs 函数返回 true 时才添加到 newnum 列表中。
    • 由于 abs 返回一个正数,filter 将其视为 true 并将该数字添加到 newnum。
    • 除非该数字为 0。abs 返回 0,这是 false,因此不会添加到 newnum 列表中。

    过滤器返回数字列表中的元素,当传递给abs函数时结果为true,而不是abs函数的返回值。

    【讨论】:

      猜你喜欢
      • 2018-10-28
      • 1970-01-01
      • 1970-01-01
      • 2020-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-10
      • 1970-01-01
      相关资源
      最近更新 更多