[英]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 ),sort(list,key =)函數假設使用參數鍵排序而不實際更改元素名單。 但是,abs()只接受int()而我沒有找到一種方法將該元組變成int,如果這是我需要做的。
你需要給key
一個可調用的 ,一個函數或類似的調用; 它將被調用為被排序的序列中的每個元素。 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]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.