iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python的sort、sorted和argsort怎么使用
  • 434
分享到

python的sort、sorted和argsort怎么使用

2023-06-29 10:06:56 434人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

本文小编为大家详细介绍“python的sort、sorted和argsort怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python的sort、sorted和argsort怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢

本文小编为大家详细介绍“python的sort、sorted和argsort怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python的sort、sorted和argsort怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

引言

这三个排序方法应对日常工作基本够用

先说一下三者的区别

  • sort, sorted 是用在 list 数据类型中的排序方法

  • argsort 是用在 numpy 数据类型中的排序方法( numpy 里也有一个 sort 方法,下面会讲)

sort 和 sorted 的区别如下

先看两个简单的升序排序,分别使用 sorted 和 sort 方法

# sorted num_list = [1, 8, 2, 3, 10, 4, 5]ordered_list = sorted(num_list)print(ordered_list)    # [1, 2, 3, 4, 5, 8, 10]
# sortnum_list = [1, 8, 2, 3, 10, 4, 5]num_list.sort()print(num_list)    # [1, 2, 3, 4, 5, 8, 10]

可以看出 sorted 并没有修改原来的数组,而是将排序的结果作为参数传递给一个新的数组,而 sort 则在原数组上直接进行了排序
区别就是 sorted 需要一个变量接收排序结果,sort不用

建议使用 sorted,因为 sort 虽然代码更简洁,但是会修改原数组,这样不灵活,如果你有多个地方同时使用了这个数组,那么经过 sort 操作之后的数组就已经不是原来那个数组了,

debug的时候很麻烦,说完了区别,来具体讲讲使用方法

用法实例

1.升序排序

# sorted 升序排序num_list = [1, 8, 2, 3, 10, 4, 5]ordered_list = sorted(num_list)print(ordered_list)    # [1, 2, 3, 4, 5, 8, 10]
# sort 升序排序num_list = [1, 8, 2, 3, 10, 4, 5]num_list.sort()print(num_list)    # [1, 2, 3, 4, 5, 8, 10]

2.降序排序

# sorted 降序排序num_list = [1, 8, 2, 3, 10, 4, 5]ordered_list = sorted(num_list, reverse=True)print(ordered_list)    # [1, 2, 3, 4, 5, 8, 10]
# sort 降序排序num_list = [1, 8, 2, 3, 10, 4, 5]num_list.sort(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 arrprint 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 arrayarray.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频道。

--结束END--

本文标题: python的sort、sorted和argsort怎么使用

本文链接: https://www.lsjlt.com/news/324314.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python的sort、sorted和argsort怎么使用
    本文小编为大家详细介绍“python的sort、sorted和argsort怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“python的sort、sorted和argsort怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢...
    99+
    2023-06-29
  • python数组排序方法之sort、sorted和argsort详解
    目录引言sort 和 sorted 的区别如下用法实例1.升序排序2.降序排序3.如果不想要排序后的值,想要排序后的索引,可以这样做4.字符串类型排序5.二维数组排序6.二维数组获取...
    99+
    2024-04-02
  • Python排序sort()函数和sorted()函数怎么使用
    本文小编为大家详细介绍“Python排序sort()函数和sorted()函数怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python排序sort()函数和sorted()函数怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路...
    99+
    2023-07-06
  • Python中sort()和sorted()的区别
    一、使用对象不同 sort()是列表对象的方法,只能用于列表的排序。而sorted()是Python的内建函数,可以对任何可迭代对象进行排序,包括列表、元组、字典等。 二、排序方式不同 sort()方法默认是在原列表上进行...
    99+
    2023-10-29
    区别 Python sort
  • python中的sorted()函数和sort()方法怎么用
    这篇文章主要讲解了“python中的sorted()函数和sort()方法怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python中的sorted()函数和sort()方法怎么用”吧...
    99+
    2023-06-29
  • 详解Python中sorted()和sort()的使用与区别
    目录sort()方法是什么如何妙用sorted() 方法总结在 Python 中,你可以使用 sorted() 方法或 sort() 方法对数据进行排序。 在本文中,我将提供 sor...
    99+
    2024-04-02
  • python列表排序用 sort()和sorted()的区别
    目录1. 是否改变原列表2.参数设置:key 和 reverse3.输入数据类型前言: 内容提要:本文比较了 Python 中用于列表排序的两种函数 sort() 和 sorted(...
    99+
    2024-04-02
  • python中sort()和sorted()的区别及用法实例
    目录一、二、python中输入字符串转列表的注意问题总结本文主要讲sort与sorted的主要区别,以便正确使用 一、 sort()只能用于列表;sorted()可以用于所有可迭代对...
    99+
    2024-04-02
  • python中的 sorted()函数和sort()方法区别
    目录1.sort()2.sorted()3.sorted()操作列表4.sorted()排序字典①参数key:使用lambda定义②参数key:使用itemgetter直接生成1.s...
    99+
    2024-04-02
  • Python中的sorted()怎么使用
    这篇文章主要介绍“Python中的sorted()怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中的sorted()怎么使用”文章能帮助大家解决问题。Python中sorted(...
    99+
    2023-07-05
  • sorted在Python中怎么使用
    在Python中,可以使用`sorted()`函数来对序列进行排序。`sorted()`函数接受一个可迭代的对象作为参数,并返回一个...
    99+
    2023-09-21
    Python
  • sorted()函数怎么在python中使用
    这篇文章给大家介绍sorted()函数怎么在python中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易...
    99+
    2023-06-14
  • python sorted()函数的参数怎么使用
    这篇文章主要介绍“python sorted()函数的参数怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python sorted()函数的参数怎么使用”文章能帮助大家解决问题。概念对可迭代...
    99+
    2023-06-30
  • python中的sort函数怎么使用
    在Python中,可以使用sort()方法对列表进行排序。sort()方法有两种用法: 对列表进行原地排序:直接在原列表对象上进行...
    99+
    2024-04-02
  • java Sorted怎么使用
    这篇文章主要介绍“java Sorted怎么使用”,在日常操作中,相信很多人在java Sorted怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java Sorted怎么使用”的疑惑有所帮助!接下来...
    99+
    2023-06-30
  • 怎么在python中使用sorted对键和值进行排序
    今天就跟大家聊聊有关怎么在python中使用sorted对键和值进行排序,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C...
    99+
    2023-06-14
  • python怎么用sorted进行降序
    python 的 sorted 函数可以通过传入 reverse=true 参数对列表进行降序排序:创建一个可迭代对象(如列表)。在 sorted 函数中传入该对象和 reverse=t...
    99+
    2024-05-14
    python 可迭代对象
  • golang sort库怎么使用
    Go语言的sort包提供了对切片、数组和用户自定义集合的排序功能。 使用sort库进行排序的一般步骤如下: 导入sort库: i...
    99+
    2023-10-26
    golang
  • C++中的sort()函数怎么使用
    这篇文章主要介绍“C++中的sort()函数怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++中的sort()函数怎么使用”文章能帮助大家解决问题。sort(v.begin(),v.end...
    99+
    2023-07-05
  • java sort方法怎么使用
    Java中的`sort()`方法可以用来对数组或集合进行排序。你可以按照以下方式使用`sort()`方法:1. 对数组排序:```j...
    99+
    2023-09-27
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作