按绝对值排序不改变绝对值
Sorting by absolute value without changing to absolute value
我想使用 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),sorted(list, key=) 函数假定使用参数 key 进行排序而不实际上改变了列表的元素。但是,abs() 只接受 int() 并且我还没有想出一种方法将那个元组变成一个 int,如果那是我需要做的。
你需要给key
一个callable,一个函数或类似的调用;它将被排序序列中的每个元素调用。 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]
因此,如果您想对这 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)))
lst = [-1, 1, -2, 20, -30, 10]
>>>print(sorted(lst, key=abs))
>>>[-1, 1, -2, 10, 20, -30]
我想使用 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),sorted(list, key=) 函数假定使用参数 key 进行排序而不实际上改变了列表的元素。但是,abs() 只接受 int() 并且我还没有想出一种方法将那个元组变成一个 int,如果那是我需要做的。
你需要给key
一个callable,一个函数或类似的调用;它将被排序序列中的每个元素调用。 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]
因此,如果您想对这 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)))
lst = [-1, 1, -2, 20, -30, 10]
>>>print(sorted(lst, key=abs))
>>>[-1, 1, -2, 10, 20, -30]