2013-10-04 65 views

回答

3

您可以使用mapabs功能來實現這一點:

In [1]: sorted(map(abs, lista)) 
Out[1]: [1, 2, 3, 5, 7, 8] 

要你寫的代碼做到這一點,你可以

# The list defined above 
lista = [a,b,c,d] 

# Sorted from least to greatest absolute value 
sorted_abs_list = sorted(map(abs, lista)) 

# Sorted from greatest to least absolute value 
sorted_abs_list = sorted(map(abs, lista), reverse=True) 
+0

但是我怎麼用我寫的代碼做這件事?謝謝 –

+0

我編輯了我的答案給你一個簡單的例子來解決。 – mdml

0
sorted([abs(el) for el in lista]) 
+1

'sorted'可以接受一個生成器表達式作爲參數,因此'sorted(abs(el)for el in lista)'更好。 – rahmu

1

你可以這樣試試,

>>> list[-2,-3,8,-5,1,7] 
>>> list = [ i if i > 0 else -i for i in list] 
>>> list.sort() 
>>> list 
[1, 2, 3, 5, 7, 8] 
>>> 

或者

>>> list[-2,-3,8,-5,1,7] 
>>> list = [ abs(i) for i in list] 
>>> list.sort() 
>>> list 
[1, 2, 3, 5, 7, 8] 
+1

你可以用'-i'替換'-1 * i'。或者你可以用'abs(i)'替換'i if i> 0 else -i'。另外避免命名你的變量'list'或其他內建函數。 – rahmu

+0

謝謝@rahmu,更新 –

+0

'abs()'是一個給出絕對值的函數。 – cyphar

0

如果你想通過自己的絕對值排序,但都榜上有名保持其原始值:

lista = [-2, -3, 8, -5, 1, 7] 

lista.sort(key=lambda x: abs(x)) 

lista 

Out: [1, -2, -3, -5, 7, 8] 
0
lista = [-2, -3, 8, -5, 1, 7] 

lista.sort(key=abs) 

lista 

你可以試試上面的代碼。

相關問題