Python排序函数用法

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

Python排序函数完美体现了Python语言的简洁性,对于List对象,我们可以直接调用sort()函数(这里称为"方法"更合适)来进行排序,而对于其他可迭代对象(如set,dict),我们可以使用更灵活的sorted()函数。

一.List的sort()函数

Python源码builtins.py文件对sort()函数的定义如下

    def sort(self, key=None, reverse=False):
        """ L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE* """
        pass

可以看出:sort()函数没有返回值,有两个参数。key表示的是排依据的函数;reverse是指需不需要反转列表,默认为False表示的是升序,如果设为True表示的是降序。

sort()用法如下

L = [1, 2, 7, 4, 3]
L.sort()
print(L)
#[1, 2, 3, 4, 7]

我们加入一些参数来看看,如降序排序:

L = [1, 2, 7, 4, 3]
L.sort(reverse=True)
print(L)
#[7, 4, 3, 2, 1]

再比如,我们想通过key来实现降序排序,这里用到匿名函数lambda:

L = [1, 2, 7, 4, 3]
L.sort(key=lambda x : x*(-1))
print(L)
#[7, 4, 3, 2, 1]

当然,key还有很多用法,我们可以将其设为内置函数或者自定义函数,比如用绝对值函数:

L = [-1, 2, -7, 4, 3]
L.sort(key=abs)
print(L)
#[-1, 2, 3, 4, -7]

Python3对key的还有另外一种支持,就是通过functools模块的cmp_to_key函数,将传统的cmp函数转为key。这和lambda函数用法类似,但是对于比较的逻辑比较复杂的情况,这样的方式会更清晰更便于维护。

from functools import cmp_to_key
L = [-1, 2, -7, 4, 3]
def cmp(a,b):
    if abs(a) < abs(b):
        return -1
    else:
        return 1
L.sort(key=cmp_to_key(cmp))
print(L)

二.sorted()

比起sort()函数只能排序列表,sorted函数更通用一些。 官方文档 对其有详细说明:

sorted(iterable, *, key=None, reverse=False)
Return a new sorted list from the items in iterable.

sorted()返回值为List类型。参数列表iterable表示可迭代对象;*表示位置参数就此终结,后面的参数都必须用关键字来指定;key与reverse参数用法与sort()完全一致。

sorted()用法如下:

L = [1, 2, 7, 4, 3]
L1 = sorted(L)
print(L1)
#[1, 2, 3, 4, 7]

对于reverse和key的用法就不单独展示了,可以参考sort()。如果我们想要排序的对象是一个集合,那么用法与列表排序一样:

S = {1, 2, 7, 4, 3}
S1= sorted(S)
print(S1)
#[1, 2, 3, 4, 7]

注意这个排序对象是set对象,而结果是一个列表对象(set对象本就没有顺序一说)。如果我们要实现一个复杂一点的排序呢?比如对字典排序,排序依据是键值,排序结果是由键值对组成的列表:

Dict = {'a':2, 'b':3, 'c':7, 'd':4, 'e':1}
L = sorted(Dict.items(), key=lambda x : x[1])
print(L)
#[('e', 1), ('a', 2), ('b', 3), ('d', 4), ('c', 7)]

最后给一个Leetcode上的题( 根据字符出现频率排序 ):

给定一个字符串,请将字符串里的字符按照出现的频率降序排列。
输入:
"tree"
输出:
"eert"
解释:
'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。

通过使用sorted函数代码就很清晰易读了:

def frequencySort(s):
    d = {}
    for i in s:
        d[i] = d.get(i,0) + 1
    L = sorted(d.keys(), key=lambda x: d[x], reverse=True)
    s = ''
    for i in L:
        s += i * d[i]
    return s

注意这里的d.keys()生成的是一个由key组成的可迭代对象,而前面代码的Dict.items()生成的是一个由键值对对象(这是一个Tuple对象)组成的可迭代对象。

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理

想要获取更多Python学习资料可以加QQ:2955637827私聊或加Q群630390733大家一起来学习讨论吧!

Python中对各种数据结构:列表、元组、字典(list、tuple、dict)进行排序sortsorted、heapq、Counter Python 中对数据进行排序是非常简单的,其内置了列表 list 的排序方法 sort,同时还内置了 sorted 方法,不仅可以对 list 排序,还可以对 tuple 和 dict 排序。不仅如此,关于排序 Python 还提供其它的选择,以应对更多的场景,如:heapq 、collection.Counter 。 sort sort 是对 list 进行原地址排序,也就是改变原有的 lis... 阅读详情

相关推荐

Python排序函数sorted的用法

详细讲解Python排序函数sorted的用法

rainchxy的博客 3404

Python中的Set集合进行排序

然而,我们可以通过一些技巧来对Set集合进行排序。在本文中,我将介绍两种常用的方法来对Set集合进行排序。需要注意的是,由于Set集合是无序的,即使我们使用了排序函数对Set集合进行排序,得到的结果也是一个有序的列表,而不是Set集合。Set集合是无序的,但是列表是有序的,因此我们可以将Set集合转换为列表,然后对列表进行排序。最后,我们打印出了排序后的Set集合。综上所述,我们可以通过将Set集合转换为列表后进行排序,或者直接使用。除了将Set集合转换为列表后进行排序外,我们还可以直接使用。

DevScript的博客 1211

Python Set集合排序

第一种方法是使用sorted()函数,它可以对Set集合进行排序并返回一个排序后的列表,然后我们可以将其转换回Set类型。在上面的代码中,我们使用sorted()函数与lambda函数结合对Set集合进行排序。然后,我们将返回的排序后的列表转换回Set,得到了排序后的Set集合。对于Set集合来说,我们可以将其作为参数传递给sorted()函数,并将返回的排序后的列表转换回Set。然后,我们使用sorted()函数对该集合进行排序,并将返回的排序后的列表转换回Set,得到了排序后的Set集合。

BugHunterX的博客 1711

python set函数排序_python set集合排序_Python Set集合

Python Set集合Python 中的集合,和数学中的集合概念一样,用来保存不重复的元素,即集合中的元素都是唯一的,互不相同。从形式上看,和字典类似,Python 集合会将所有元素放在一对大括号 {} 中,相邻元素之间用“,”分隔,如下所示:{element1,element2,...,elementn}其中,elementn 表示集合中的元素,个数没有限制。 从内容上看,同一集合中,只能存储...

weixin_31602525的博客 9032

Python排序函数sort(),sorted(),sort_values(),sort_index().

Python排序函数sort(),sorted(),sort_values(),sort_index().

weixin_56175042的博客 1万+

[转]python中的排序函数sorted用法

一、sort函数 如果对python中的列表进行排序,可以使用List类的成员函数sort,该函数会在原空间上进行操作,对列表本身进行修改,不返回副本。语法如下: L.sort(cmp=None, key=None, reverse=False) 二、sorted函数 sorted函数就比sort函数要强大许多了,sort只能对列表进行排序sorted可以对所有可迭代类型进行排序,并且返回新的已排序列表。语法如下: sorted(iterable, cmp=None, key=No

夜*星的博客 7999

python排序函数_Python排序函数用法

Python排序函数完美体现了Python语言的简洁性,对于List对象,我们可以直接调用sort()函数(这里称为"方法"更合适)来进行排序,而对于其他可迭代对象(如set,dict),我们可以使用更灵活的sorted()函数。一.List的sort()函数Python源码builtins.py文件对sort()函数的定义如下def sort(self, key=None, reverse=Fa...

weixin_39954464的博客 1938

python set函数 返回排序_Python排序函数用法

Python排序函数完美体现了Python语言的简洁性,对于List对象,我们可以直接调用sort()函数(这里称为"方法"更合适)来进行排序,而对于其他可迭代对象(如set,dict),我们可以使用更灵活的sorted()函数。一.List的sort()函数Python源码builtins.py文件对sort()函数的定义如下def sort(self, key=None, reverse=Fa...

weixin_39955781的博客 513

python内置函数sorted排序用法

python列表排序  简单记一下python中List的sort方法(或者sorted内建函数)的用法。  关键字:  python列表排序 python字典排序 sorted  List的元素可以是各种东西,字符串,字典,自己定义的类等。  sorted函数用法如下:  Python代码   sorted(data, cmp=None, k

yidangui的专栏 1124

Python中的排序函数sorted()及其用法详解

最后,我们使用sorted()函数列表进行排序,并指定一个key函数,该函数返回每个学生的成绩。sorted()函数可以用于对列表、元组和字典等可迭代对象进行排序,还可以按照自定义的排序规则对复杂对象进行排序。为了实现这一点,我们调用了字典的items()方法,将每个键值对转换为一个元组,然后使用key函数按照值从低到高的顺序进行排序。然后,我们使用sorted()函数列表进行排序,并使用key参数指定一个lambda函数,该函数返回每个字符串的长度。最后,我们打印出排好序的列表

持续更新 544

pythonsort()和sorted()排序函数用法详解

pythonsort()和sorted()排序函数用法详解

IT之一小佬的博客 7128

Python中的排序函数——argsortsortsorted用法

sort()类似c++中的排序函数,默认是从小到达排序;也可以通过设置进行从大到小进行排序,对列表、数组都可以使用。 argsort()返回的是从小到大排序后的下标。注意这是numpy数组的函数,不是列表函数,argsort()返回的也是数组。 sort函数是list列表中的函数,而sorted可以对list或者iterator进行排序 ​ ​​​​​​ ...

liujingwei8610的专栏 553

PythonPython列表排序 list.sort方法和内置函数sorted用法

print(students) # 输出[{‘name’: ‘Tom’, ‘age’: 18, ‘gender’: ‘male’}, {‘name’: ‘Lucy’, ‘age’: 19, ‘gender’: ‘female’}, {‘name’: ‘Jack’, ‘age’: 20, ‘gender’: ‘male’}]print(lst) # 输出[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]print(‘列表中的元素之和为:’, sum) # 输出列表中的元素之和为: 44。

wjianwei666的专栏 6431

排序函数python_Python排序函数用法

Python排序函数完美体现了Python语言的简洁性,对于List对象,我们可以直接调用sort()函数(这里称为"方法"更合适)来进行排序,而对于其他可迭代对象(如set,dict),我们可以使用更灵活的sorted()函数。一.List的sort()函数Python源码builtins.py文件对sort()函数的定义如下def sort(self, key=None, reverse=Fa...

weixin_39534780的博客 156

python中对字典排序sorted函数用法

1.sorted函数按key值对字典排序    先来基本介绍一下sorted函数sorted(iterable,key,reverse),sorted一共有iterable,key,reverse这三个参数。    其中iterable表示可以迭代的对象,例如可以是 dict.items()、dict.keys()等,key是一个函数,用来选取参与比较的元素,reverse则是用来指定排序是倒序...

hhhhhhhhhhh22的博客 2823

Python:匿名函数lambda的函数用法排序用法

Python:匿名函数lambda的函数用法排序用法 一、介绍: Lambda函数,是一个匿名函数,创建语法: lambda parameters:express parameters:可选,如果提供,通常是逗号分隔的变量表达式形式,即位置参数。 expression:不能包含分支或循环(但允许条件表达式),也不能包含return(或y...

Blog 1429
上一篇: 如何最简单、通俗地理解Python的文件?
下一篇: Python循环语句代码详解:while、for、break
pythonputao
博客等级 码龄6年 60粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值