上次刚刚介绍了使用sorted对字典进行排序,本来不知道要继续些什么,前几天刚好就遇见错误的使用了sort和sorted导致的错误,就记录一下。
一、sort() 和 sorted()
图一 sort的函数介绍 图二 sorted的函数介绍主要区别:sort()是在原位重新排列列表,而sorted()是产生一个新的列表。
看文档的说明就比较清晰了,接下来看看实际使用。
nums1=[1,0,4,2,5,7,3]
#使用sorted
nums2 = sorted(nums1)
print("nums2(使用sorted):",nums2)
print("nums1:",nums1)
# 输出
>> nums2(使用sorted): [0, 1, 2, 3, 4, 5, 7]
nums1: [1, 0, 4, 2, 5, 7, 3]
#使用sort
nums3 = nums1.sort()
print("nums3:",nums3)
print("nums1(使用sort):",nums1)
#输出
>>nums3: None
nums1(使用sort): [0, 1, 2, 3, 4, 5, 7]
(1)从文档或者代码中可以看到他们的使用方法是不一样的:sorted(nums1)与nums1.sort()两者不同。
(2)注意以下nums3,文档中也说了,sort没有返回值,因为在原本的地址空间中排序。
对于sort和sorted,他们都有参数key, inverse, cmp等,具体的使用可以看一下使用sorted对dict按照key或value进行排序
二、argsort()
为什么要将这个排序呢,因为在使用pandas做数据分析的时候见过。
图三 argsort文档
这个函数返回的是排序完之后的下表的索引
代码
nums1=np.array([1,0,4,2,5,7,3])
index = np.argsort(nums1)
print(index)
#返回值
>> [1 0 3 6 2 4 5]
# 返回索引,index[0]=1,说明列表nums1中的最小元素的索引是为1,即为nums1[1] = 0
# index[1]=0,说明列表nums1中的第二小元素的索引是为0,即为nums1[0] = 1
# ...
# index[6]=5,说明列表nums1中的最大元素的索引是为5,即为nums1[5] = 7
那么获得了索引有什么用呢,你就可以通过索引获得排序好的数据。
print(nums1[[index]])
# 带入索引,返回排序好的数列
>> [0 1 2 3 4 5 7]
看这个例子可能觉得,这不是吃饱了没事干吗,再看一个例子(《利用python进行数据分析中的一个例子》):
数据arg_countssum求和,argsort()
通过indexer进行排序
我的任务是对arg_counts进行排序,但是是按照 windows 和 not windows的和进行排序,当然可以再加一列,然后排序。不过这里就是用了argsort获取排序后的索引。
网友评论