我想使用abs()对元组进行排序,而不实际将元组的元素更改为正值。
def sorting(numbers_array):
return sorted(numbers_array, key = abs(numbers_array))
sorting((-20, -5, 10, 15))
根据python wiki(https://wiki.python.org/moin/HowTo/Sorting/#Key_Functions),sort(list,key =)函数假设使用参数 key 进行排序,而不实际更改列表的元素。但是,abs()只接受int()而我没有找到一种方法将该元组变成int,如果这是我需要做的。
答案 0 :(得分:7)
你需要给key
一个可调用的,一个函数或者类似于call;它将被排序的序列中的每个元素调用。 abs
可以是可调用的:
sorted(numbers_array, key=abs)
您转而使用了abs()
来电的结果,这确实不适用于整个列表。
演示:
>>> def sorting(numbers_array):
... return sorted(numbers_array, key=abs)
...
>>> sorting((-20, -5, 10, 15))
[-5, 10, 15, -20]
答案 1 :(得分:1)
因此,如果要对这4个值(-20,-5,10,15)进行排序,则所需的输出为: [-5,10,15,-20],因为你取的是绝对值。
所以这是解决方案:
def sorting(numbers_array):
return sorted(numbers_array, key = abs)
print(sorting((-20, -5, 10, 15)))
答案 2 :(得分:0)
lst = [-1, 1, -2, 20, -30, 10]
>>>print(sorted(lst, key=abs))
>>>[-1, 1, -2, 10, 20, -30]