sort排序函数用法python,python数组排序不用sort
本文主要介绍了python数组排序方法sort、sorted和argsort的相关资料。通过示例代码详细介绍,对您的学习或工作有一定的参考价值。有需要的朋友可以参考一下。
00-1010简介sort和sorted的区别如下:用法举例1。升序排序2。降序排序3。如果不想要排序的值,想要排序的索引,可以这样做:4。字符串类型排序5。2D数组排序6。2D数组得到排序索引7。字典数组排序8。字典数组正在获取排序索引9。对象分类10。对象排序获取排序索引11。1D数组排序[numpy] 12。1D数组正在获取排序索引[numpy] 13。1D数组降序排序[numpy] 14。2D数组排序。15.获取排序索引的二维数组[numpy]附件:python对数组进行排序,输出排序索引值的汇总。
目录
这三种整理方式对于日常工作应该基本够用了。
先说三者的区别。
排序,已排序是列表数据类型中使用的排序方法。argsort是numpy数据类型中使用的排序方法(numpy中也有一个排序方法,将在下面描述)
引言
我们来看两个简单的升序排序,分别使用sorted和sorted方法。
#已排序
数字列表=[1,8,2,3,10,4,5]
ordered_list=sorted(num_list)
print(ordered_list) # [1,2,3,4,5,8,10]
#排序
数字列表=[1,8,2,3,10,4,5]
num_list.sort()
print(num_list) # [1,2,3,4,5,8,10]
可以看到sort并没有修改原数组,而是将排序后的结果作为参数传递给一个新数组,sort直接在原数组上排序。
区别在于sort需要一个变量来接收排序结果,而sort不需要。
建议使用sort,因为虽然sort代码更简洁,但是会修改原数组,不太灵活。如果同时在多个地方使用这个数组,那么排序操作后的数组就不再是原来的数组了。
调试很麻烦。说完了区别,再来详细说说用法。
sort 和 sorted 的区别如下
用法实例
#升序排序
数字列表=[1,8,2,3,10,4,5]
ordered_list=sorted(num_list)
print(ordered_list) # [1,2,3,4,5,8,10]
#升序排序
数字列表=[1,8,2,3,10,4,5]
num_list.sort()
print(num_list) # [1,2,3,4,5,8,10]
1.升序排序
#降序排序
数字列表=[1,8,2,3,10,4,5]
ordered_list=sorted(num_list,reverse=True)
print(ordered_list) # [1,2,3,4,5,8,10]
#降序排序
数字列表=[1,8,2,3,10,4,5]
num_list.s
ort(reverse=True)
print(num_list) # [1, 2, 3, 4, 5, 8, 10]
3.如果不想要排序后的值,想要排序后的索引,可以这样做
num_list = [1, 8, 2, 3, 10, 4, 5]ordered_list = sorted(range(len(num_list)), key=lambda k: num_list[k])
print(ordered_list) # [0, 2, 3, 5, 6, 1, 4]
4.字符串类型排序
# 字符串类型排序str_list = [1, 8, 2, 3, 10, 4, 5]
ordered_list = sorted(str_list)
print(ordered_list) # [1, 10, 2, 3, 4, 5, 8]
str_list = [A, D, B, N, C, R, V]
ordered_list = sorted(str_list)
print(ordered_list) # [A, B, C, D, N, R, V]
5.二维数组排序
book_list = [[北大马克思主义研究, 9787509728529, 2011],
[人的解放, 9787215064003, 2014],
[西方经典悦读 资本论, 9787200092882, 2012],
[列宁的一生, 9787501319343, 2013],
]
# sorted 按出版年升序排序
ordered_list = sorted(book_list, key=lambda book: book[2])
print(ordered_list) # [[北大马克思主义研究, 9787509728529, 2011], [西方经典悦读 资本论, 9787200092882, 2012], [列宁的一生, 9787501319343, 2013], [人的解放, 9787215064003, 2014]]
# sort 按出版年降序排序
book_list.sort(key=lambda book: book[2], reverse=True)
print(book_list) # [[人的解放, 9787215064003, 2014], [列宁的一生, 9787501319343, 2013], [西方经典悦读 资本论, 9787200092882, 2012], [北大马克思主义研究, 9787509728529, 2011]]
6.二维数组获取排序后的索引
# sorted 获取排序后的索引book_list = [
[北大马克思主义研究, 9787509728529, 2011],
[人的解放, 9787215064003, 2014],
[西方经典悦读 资本论, 9787200092882, 2012],
[列宁的一生, 9787501319343, 2013],
]
ordered_list = sorted(range(len(book_list)), key=lambda k: book_list[k][2])
print(ordered_list) # [0, 2, 3, 1]
7.字典数组排序
book_list = [{name: 北大马克思主义研究, isbn: 9787509728529, publish_year: 2011},
{name: 人的解放, isbn: 9787215064003, publish_year: 2014},
{name: 西方经典悦读 资本论, isbn: 9787200092882, publish_year: 2012},
{name: 列宁的一生, isbn: 9787501319343, publish_year: 2013},
]
# sorted 按出版年降序排序
ordered_list = sorted(book_list, key=lambda book: book[publish_year], reverse=True)
print(ordered_list) # [{name: 人的解放, isbn: 9787215064003, publish_year: 2014}, {name: 列宁的一生, isbn: 9787501319343, publish_year: 2013}, {name: 西方经典悦读 资本论, isbn: 9787200092882, publish_year: 2012}, {name: 北大马克思主义研究, isbn: 9787509728529, publish_year: 2011}]
# sort 按出版年升序排序
book_list.sort(key=lambda book: book[publish_year])
print(book_list) # [{name: 北大马克思主义研究, isbn: 9787509728529, publish_year: 2011}, {name: 西方经典悦读 资本论, isbn: 9787200092882, publish_year: 2012}, {name: 列宁的一生, isbn: 9787501319343, publish_year: 2013}, {name: 人的解放, isbn: 9787215064003, publish_year: 2014}]
8.字典数组获取排序后的索引
book_list = [{name: 北大马克思主义研究, isbn: 9787509728529, publish_year: 2011},
{name: 人的解放, isbn: 9787215064003, publish_year: 2014},
{name: 西方经典悦读 资本论, isbn: 9787200092882, publish_year: 2012},
{name: 列宁的一生, isbn: 9787501319343, publish_year: 2013},
]
ordered_list = sorted(range(len(book_list)), key=lambda k: book_list[k][publish_year])
print(ordered_list) # [0, 2, 3, 1]
9.对象排序
class Book(object):def __init__(self, name, isbn, publish_year):
self.name = name
self.isbn = isbn
self.publish_year = publish_year
def __repr__(self):
return repr((self.name, self.isbn, self.publish_year))
book_list = [
Book(北大马克思主义研究, 9787509728529, 2011),
Book(人的解放, 9787215064003, 2014),
Book(西方经典悦读 资本论, 9787200092882, 2012),
Book(列宁的一生, 9787501319343, 2013),
]
# sorted 按出版年降序排序
ordered_list = sorted(book_list, key=lambda book: book.publish_year, reverse=True)
print(ordered_list) # [(人的解放, 9787215064003, 2014), (列宁的一生, 9787501319343, 2013), (西方经典悦读 资本论, 9787200092882, 2012), (北大马克思主义研究, 9787509728529, 2011)]
# sort 按出版年升序排序
book_list.sort(key=lambda book: book.publish_year)
print(book_list) # [(北大马克思主义研究, 9787509728529, 2011), (西方经典悦读 资本论, 9787200092882, 2012), (列宁的一生, 9787501319343, 2013), (人的解放, 9787215064003, 2014)]
10.对象排序获取排序后的索引
book_list = [Book(北大马克思主义研究, 9787509728529, 2011),
Book(人的解放, 9787215064003, 2014),
Book(西方经典悦读 资本论, 9787200092882, 2012),
Book(列宁的一生, 9787501319343, 2013),
]
ordered_list = sorted(range(len(book_list)), key=lambda k: book_list[k].publish_year)
print(ordered_list) # [0, 2, 3, 1]
11.一维数组排序【numpy】
numpy 只有 sort 没有 sorted,且 numpy 的 sort 方法 和 list 的 sorted 方法使用起来类似
import numpy as np# 一维数组
num_list = np.array([1, 8, 2, 3, 10, 4, 5])
index_list = np.sort(num_list)
print(index_list) # [ 1 2 3 4 5 8 10]
12.一维数组获取排序后的索引【numpy】
num_list = np.array([1, 8, 2, 3, 10, 4, 5])index_list = np.argsort(num_list)
print(index_list) # [0 2 3 5 6 1 4]
13.一维数组降序排序【numpy】
# # 降序排序num_list = np.array([1, 8, 2, 3, 10, 4, 5])
index_list = np.argsort(-num_list) # 加负号按降序排序
print(index_list) # [4 1 6 5 3 2 0]
14.二维数组排序【numpy】
num_list = np.array([[1, 8, 2, 9],
[8, 2, 4, 5],
[2, 3, 7, 4],
[1, 2, 3, 5]
])
ordered_list = np.sort(num_list, axis=0) # axis=0 是按列排序
print(ordered_list)
# [[1 2 2 4]
# [1 2 3 5]
# [2 3 4 5]
# [8 8 7 9]]
ordered_list = np.sort(num_list, axis=1) # axis=1 是按行排序
print(ordered_list)
# [[1 2 8 9]
# [2 4 5 8]
# [2 3 4 7]
# [1 2 3 5]]
15.二维数组获取排序后的索引【numpy】
num_list = np.array([[1, 8, 2, 9],
[8, 2, 4, 5],
[2, 3, 7, 4],
[1, 2, 3, 5]
])
ordered_list = np.argsort(num_list, axis=0) # axis=0 是按列排序
print(ordered_list)
# [[0 1 0 2]
# [3 3 3 1]
# [2 2 1 3]
# [1 0 2 0]]
ordered_list = np.argsort(num_list, axis=1) # axis=1 是按行排序
print(ordered_list)
# [[0 2 1 3]
# [1 2 3 0]
# [0 1 3 2]
# [0 1 2 3]]
附:python对数组进行排序,并输出排序后对应的索引值
# -*- coding: cp936 -*-import numpy as np
#一维数组排序
arr = [1, 3, 5, 2, 4, 6]
arr = np.array(arr)
print arr
print np.sort(arr)#或print np.sort(arr,axis=None)
print (np.argsort(arr)) # 正序输出索引,从小到大
print (np.argsort(-arr)) # 逆序输出索引,从大到小
输出结果:
[1 3 5 2 4 6]
[1 2 3 4 5 6]
[0 3 1 4 2 5]
[5 2 4 1 3 0]
#二维数组排序list1 = [[4,3,2],[2,1,4]]
array=np.array(list1)
print array
array.sort(axis=1) #axis=1按行排序,axis=0按列排序
print array
输出结果:
[[4 3 2]
[2 1 4]][[2 3 4]
[1 2 4]]
总结
到此这篇关于python数组排序方法之sort、sorted和argsort详解的文章就介绍到这了,更多相关python数组排序方法内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。