Sort a list in python

后端 未结 3 885
执念已碎
执念已碎 2020-12-03 11:30

I have this list

[1,-5,10,6,3,-4,-9]

But now I want the list to be sorted like this:

[10,-9,6,-5,-4,3,1]

相关标签:
3条回答
  • 2020-12-03 11:51

    Use abs as key to the sorted function or list.sort:

    >>> lis = [1,-5,10,6,3,-4,-9]
    >>> sorted(lis, key=abs, reverse=True)
    [10, -9, 6, -5, -4, 3, 1]
    
    0 讨论(0)
  • 2020-12-03 11:53

    Use:

        l.sort(key= abs, reverse = True)
    

    Lists can be sorted using the sort() method. And the sort method has a parameter, called key, which you can pass a function. Using this parameter, your list won't be ordered by the values of the list, but by the values of your function on the list.

    In your case, you should use the abs() function, which will return the absolute value of your list elements. So, your list

    >>> l = [1,-5,10,6,3,-4,-9]
    

    Will be sorted like it was

    >>>  [abs(1),abs(-5),abs(10),abs(6),abs(3),abs(-4),abs(-9)]
    

    Which should be:

    >>> [1 ,-4 ,-5 ,6 ,-9 ,10]
    

    To order from the biggest to the smalles, use the reverse=True parameter also.

    0 讨论(0)
  • 2020-12-03 12:05

    I was searching this and wanted to add my solution: This is how you can create 2D array with (x,f(x)) values in sorted order.

    #Create 30 random number between 0 and 1
    k = np.random.random ((30,2)) 
    k= np.sort(k,0) #sort x values
    for i in range(len(k[:])):
        k[i][1] = f(k[i][0])
    
    0 讨论(0)
提交回复
热议问题