为什么绝对函数返回-x而不是x?

我做了一个绝对函数来在python编程中打印绝对值,但是它没有返回我期望的值。

l1=[1,2,3,4,5,-1,-5,-9,10]
def absolute(x):
    if x>=0:
        return x
    else:
        return -x
print(sorted(l1, key=absolute))

输出:[1,-1、2、3、4、5,-5,-9、10]  预期输出:[1、2、3、4、5、5、9、10]

请尽快帮助我?

评论
贸芳洁
贸芳洁

The function does exactly what it's supposed to: sorts the elements by their absolute value. |3| < |-5| so 3 will go before -5. If you want the list to contain the sorted absolute values, you need to change it first:

output = sorted(map(abs, [1, -1, 2, 3, 4, 5, -5, -9, 10]))

(Notice that abs already exists as a builtin function).

点赞
评论
时光逆转
时光逆转

您正在使用函数作为键进行排序,仅对列表进行排序。 如果要将函数应用于每个参数,则可以使用map。

l1=[1,2,3,4,5,-1,-5,-9,10]
def absolute(x):
    if x>=0:
        return x
    else:
        return -x
print(sorted(map(absolute, l1)))
点赞
评论