簡體   English   中英

按絕對值排序而不更改為絕對值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM