按绝对值排序而不更改为绝对值

Nic*_*mer 4 python sorting python-3.x

我想使用abs()对元组进行排序,而不实际将元组的元素更改为正值.

def sorting(numbers_array):
    return sorted(numbers_array, key = abs(numbers_array))


sorting((-20, -5, 10, 15))
Run Code Online (Sandbox Code Playgroud)

根据python wiki(https://wiki.python.org/moin/HowTo/Sorting/#Key_Functions),sort(list,key =)函数假设使用参数排序而不实际更改元素名单.但是,abs()只接受int()而我没有找到一种方法将该元组变成int,如果这是我需要做的.

Mar*_*ers 11

你需要给key一个可调用的,一个函数或者类似的函数来调用; 它将被调用为被排序的序列中的每个元素.abs可以是可调用的:

sorted(numbers_array, key=abs)
Run Code Online (Sandbox Code Playgroud)

您在代替通过结果的的abs()号召,这的确不符合整个列表工作.

演示:

>>> def sorting(numbers_array):
...     return sorted(numbers_array, key=abs)
... 
>>> sorting((-20, -5, 10, 15))
[-5, 10, 15, -20]
Run Code Online (Sandbox Code Playgroud)