python排序函数

python 基础的排序函数 sort 、sorted 、argsort

一、sort 、sorted

1.简单升序排序直接调用sorted函数即可

sort()方法仅定义在list中

ls = list([5, 2, 3, 1, 4])
ls.sort()
print ls
>>>[1, 2, 3, 4, 5]

sorted()方法对所有的可迭代序列都有效,返回list

l1 = ['b','c','d','b','c','a','a'] 
sorted(set(l1),key=l1.index) 
Out[31]: ['b', 'c', 'd', 'a']

print(sorted({8: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}))
>>>[2, 3, 4, 5, 8]

2.sorted(iterable,cmp,key,reverse)

(1) 使用cmp函数排序,cmp是带两个参数的比较函数

>>>L = [('david', 90), ('mary',90), ('sara',80),('lily',95)]

>>>print(sorted(L,cmp = lambda x,y: >>>cmp(x[0],y[0])))#按照第一个位置的字母序排序
[('david', 90), ('lily', 95), ('mary', 90), ('sara', 80)]

>>>print(sorted(L,cmp = lambda x,y: >>>cmp(x[1],y[1])))#按照第二个位置的数字序排序
[('sara', 80), ('david', 90), ('mary', 90), ('lily', 95)]

(2) 添加key参数,key 是带一个参数的函数
list.sort()和sorted()函数使用key参数来指定一个函数,此函数将在每个元素比较前被调用。

# 通过key指定的函数来忽略字符串的大小写
>>>print(sorted("This is a test string from Andrew".split(), key=str.lower))
['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']

# 通过key指定的函数来保持原序列顺序
>>>l1 = ['b','c','d','b','c','a','a'] 
>>>sorted(set(l1),key=l1.index) 
Out[31]: ['b', 'c', 'd', 'a']

(3) reverse

>>>L = [('david', 90), ('mary',90), ('sara',80),('lily',95)]
>>>print(sorted(L, reverse=True))  # 逆转
[('sara', 80), ('mary', 90), ('lily', 95), ('david', 90)]

二、argsort

argsort 是 numpy 库中的函数。返回数组值从小到大的索引值。

# 一维数组
>>>x = np.array([5, 4, 2])
>>>np.argsort(x)
Out[45]: array([2, 1, 0])

# 二维数组
>>>x = np.array([[0, 3], [2, 2]])
array([[0, 3],
       [2, 2]])
>>>np.argsort(x, axis=0) #按列排序
Out[48]: 
array([[0, 1],
       [1, 0]])
>>>np.argsort(x, axis=1) #按行排序
Out[51]: 
array([[0, 1],
       [0, 1]])
>>> x = np.array([3, 1, 2])
>>> np.argsort(x) #按升序排列
array([1, 2, 0])
>>> np.argsort(-x) #按降序排列
array([0, 2, 1])
>>> x[np.argsort(x)] #通过索引值排序后的数组
array([1, 2, 3])
>>> x[np.argsort(-x)]
array([3, 2, 1])

你可能感兴趣的:(python)