Python 内置函数sorted()的用法

 更新时间:2022年03月24日 11:22:14   作者:Brad1994  
这篇文章主要介绍了Python 内置函数sorted()的用法,文章内容介绍详细具有一的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所帮助

对于Python内置函数sorted(),先拿来跟list(列表)中的成员函数list.sort()进行下对比。在本质上,list的排序和内建函数sorted的排序是差不多的,连参数都基本上是一样的。
主要的区别在于,list.sort()是对已经存在的列表进行操作,进而可以改变进行操作的列表。而内建函数sorted返回的是一个新的list,而不是在原来的基础上进行的操作.

再来,让我们用Python自带的帮助函数help()看看对于sorted()是怎么定义的:

 >>>help(sorted)
 
 Help on built-in function sorted in module builtins:
 sorted(iterable, key=None, reverse=False)
     Return a new list containing all items from the iterable in ascending order.
     
     A custom key function can be supplied to customise the sort order, and the
     reverse flag can be set to request the result in descending order.

要先说明的是, 本人用的Python版本为3.5, 所以会跟Python2的有变差。

由帮助可以看到,传进去一个可迭代的数据,返回一个新的列表,注意,是新的列表!来看看看实例吧:

>>>g=[1,4,6,8,9,3,5]
>>>sorted(g)
Out[30]: [1, 3, 4, 5, 6, 8, 9]

>>>sorted((1,4,8,9,3,6))
Out[33]: [1, 3, 4, 6, 8, 9]

>>>sorted('gafrtp')
Out[35]: ['a', 'f', 'g', 'p', 'r', 't']

由以上可以看到,只要是可迭代对象数据,都能够进行排序,生成一个排序后的列表。

如果想要排逆序呢?很简单,只要将可选参数reverse设置为True即可:

 >>>sorted((1,4,8,9,3,6), reverse=True)
 Out[36]: [9, 8, 6, 4, 3, 1]

高级用法:

有时候,我们要处理的数据内的元素不是一维的,而是二维的甚至是多维的,那要怎么进行排序呢?这时候,sorted()函数内的key参数就派上用场了!从帮助信息上可以了解到,key参数可传入一个自定义函数。

那么,该如何使用呢?让我们看看如下代码:

>>>l=[('a', 1), ('b', 2), ('c', 6), ('d', 4), ('e', 3)]
>>>sorted(l, key=lambda x:x[0])
Out[39]: [('a', 1), ('b', 2), ('c', 6), ('d', 4), ('e', 3)]
>>>sorted(l, key=lambda x:x[0], reverse=True)
Out[40]: [('e', 3), ('d', 4), ('c', 6), ('b', 2), ('a', 1)]
>>>sorted(l, key=lambda x:x[1])
Out[41]: [('a', 1), ('b', 2), ('e', 3), ('d', 4), ('c', 6)]
>>>sorted(l, key=lambda x:x[1], reverse=True)
Out[42]: [('c', 6), ('d', 4), ('e', 3), ('b', 2), ('a', 1)]

这里,列表里面的每一个元素都为二维元组,key参数传入了一个lambda函数表达式,其x就代表列表里的每一个元素,然后分别利用索引返回元素内的第一个和第二个元素,这就代表了sorted()函数利用哪一个元素进行排列。而reverse参数就如同上面讲的一样,起到逆排的作用。默认情况下,reverse参数为False。

当然,正如一开始讲到的那样,如果想要对列表直接进行排序操作,可以用成员方法sort()来做:

>>>l.sort(key=lambda x : x[1])
>>>l
Out[45]: [('a', 1), ('b', 2), ('e', 3), ('d', 4), ('c', 6)]
>>>l.sort(key=lambda x : x[1], reverse=True)
>>>l
Out[47]: [('c', 6), ('d', 4), ('e', 3), ('b', 2), ('a', 1)]

对于三维及以上的数据排排序,上述方法同样适用。

到此这篇关于Python 内置函数sorted()的用法的文章就介绍到这了,更多相关Python 内置函数sorted()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python FTP文件定时自动下载实现过程解析

    Python FTP文件定时自动下载实现过程解析

    这篇文章主要介绍了Python FTP文件定时自动下载实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Python如何给你的程序做性能测试

    Python如何给你的程序做性能测试

    这篇文章主要介绍了Python如何给你的程序做性能测试,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • python使用PySimpleGUI设置进度条及控件使用

    python使用PySimpleGUI设置进度条及控件使用

    PySimpleGUI是一个在tkinter基础上的,足够简单,方便,pythonic的GUI库.本文给大家介绍python使用PySimpleGUI设置进度条的方法及进度条控件使用代码,感兴趣的朋友跟随小编一起看看吧
    2021-06-06
  • Python中类型检查的详细介绍

    Python中类型检查的详细介绍

    Python是一种非常动态的语言,函数定义中完全没有类型约束。下面这篇文章主要给大家详细介绍了Python中类型检查的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02
  • Python计算一个点到所有点的欧式距离实现方法

    Python计算一个点到所有点的欧式距离实现方法

    今天小编就为大家分享一篇Python计算一个点到所有点的欧式距离实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python在报表自动化的优势及实现流程

    Python在报表自动化的优势及实现流程

    本文利用Python实现报表自动化,通过介绍环境设置、数据收集和准备、报表生成以及自动化流程,展示Python的灵活性和丰富的生态系统在报表自动化中的卓越表现,从设置虚拟环境到使用Pandas和Matplotlib处理数据,到借助APScheduler实现定期自动化,每个步骤都得到详尽阐述
    2023-12-12
  • 基于循环神经网络(RNN)的古诗生成器

    基于循环神经网络(RNN)的古诗生成器

    这篇文章主要为大家详细介绍了基于循环神经网络(RNN)的古诗生成器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Python中最大最小赋值小技巧(分享)

    Python中最大最小赋值小技巧(分享)

    下面小编就为大家分享一篇Python中最大最小赋值小技巧,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • Python+unittest+requests 接口自动化测试框架搭建教程

    Python+unittest+requests 接口自动化测试框架搭建教程

    这篇文章主要介绍了Python+unittest+requests 接口自动化测试框架搭建教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Python urllib、urllib2、httplib抓取网页代码实例

    Python urllib、urllib2、httplib抓取网页代码实例

    这篇文章主要介绍了Python urllib、urllib2、httplib抓取网页代码实例,本文直接给出demo代码,代码中包含详细注释,需要的朋友可以参考下
    2015-05-05

最新评论