python之sort(),sorted()

左手的ㄟ右手 2022-06-05 05:35 356阅读 0赞



sort是容器的函数:sort(cmp=None, key=None, reverse=False)

sorted是python的内建函数:sorted(iterable, cmp=None, key=None, reverse=False)

参数解析:

cmp:比较函数,比较什么参数由key决定。例如:cmp(e1, e2) 是具有两个参数的比较函数,返回值:负数(e1 < e2);0(e1 == e2);正数( e1 > e2)。
key:用列表元素的某个属性或函数作为关键字。
reverse:排序规则,可以选择True或者False。
sorted多一个参数iterable:待排序的可迭代类型的容器

示例1:

a=[1,2,5,3,9,4,6,8,7,0,12]
a.sort()
a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12]

a=[1,2,5,3,9,4,6,8,7,0,12]
sorted(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12]
a
[1, 2, 5, 3, 9, 4, 6, 8, 7, 0, 12]

区别:

对于一个无序的列表a,调用a.sort(),对a进行排序后返回a,sort()函数修改待排序的列表内容。

而对于同样一个无序的列表a,调用sorted(a),对a进行排序后返回一个新的列表,而对a不产生影响。

示例2:

假设用元组保存每一个学生的信息,包括学号,姓名,年龄。用列表保存所有学生的信息。

list1=[(8, ‘Logan’, 20), (2, ‘Mike’, 22), (5, ‘Lucy’, 19)]
list1.sort()
list1
[(2, ‘Mike’, 22), (5, ‘Lucy’, 19), (8, ‘Logan’, 20)]

list1=[(8, ‘Logan’, 20), (2, ‘Mike’, 22), (5, ‘Lucy’, 19)]
sorted(list1)
[(2, ‘Mike’, 22), (5, ‘Lucy’, 19), (8, ‘Logan’, 20)]
list1
[(8, ‘Logan’, 20), (2, ‘Mike’, 22), (5, ‘Lucy’, 19)]

小结:由示例可以看出,当列表由list(或者tuple)组成时,默认情况下,sort和sorted都会根据list[0](或者tuple[0])作为排序的key,进行排序。

以上都是默认的排序方式,我们可以编写代码控制两个函数的排序行为。主要有三种方式:基于key函数;基于cmp函数和基于reverse函数

1)基于key函数排序

list1=[(8, ‘Logan’, 20), (2, ‘Mike’, 22), (5, ‘Lucy’, 19)]
list1.sort(key=lambda x:x[2])
list1
[(5, ‘Lucy’, 19), (8, ‘Logan’, 20), (2, ‘Mike’, 22)]

list1=[(8, ‘Logan’, 20), (2, ‘Mike’, 22), (5, ‘Lucy’, 19)]
sorted(list1, key=lambda x:x[2])
[(5, ‘Lucy’, 19), (8, ‘Logan’, 20), (2, ‘Mike’, 22)]
list1
[(8, ‘Logan’, 20), (2, ‘Mike’, 22), (5, ‘Lucy’, 19)]

2)基于cmp函数

list1=[(8, ‘Zogan’, 20), (2, ‘Mike’, 22), (5, ‘Lucy’, 19)]
list1.sort(cmp=lambda x,y:cmp(x[1],y[1]))
list1
[(5, ‘Lucy’, 19), (2, ‘Mike’, 22), (8, ‘Zogan’, 20)]

list1=[(8, ‘Zogan’, 20), (2, ‘Mike’, 22), (5, ‘Lucy’, 19)]
sorted(list1, cmp=lambda x,y:cmp(x[1],y[1]))
[(5, ‘Lucy’, 19), (2, ‘Mike’, 22), (8, ‘Zogan’, 20)]
list1
[(8, ‘Zogan’, 20), (2, ‘Mike’, 22), (5, ‘Lucy’, 19)]

3)基于reverse函数

a=[1,2,5,3,9,4,6,8,7,0,12]
a.sort(reverse=False)
a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12]

a=[1,2,5,3,9,4,6,8,7,0,12]
a.sort(reverse=True)
a
[12, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
a.sort(reverse=True)

小结:reverse=False为升序排序;reverse=True为降序排序

发表评论

表情:
评论列表 (有 0 条评论,356人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Python基础Python简介

    前言:科技在发展,时代在进步,在互联网时代,更新换代的速度非常快,我们必须得跟紧时代的步伐,否则将会被社会所淘汰。近几年里,人工智能突飞猛进,导致Python这门编程语言非常火

    相关 python模块

    1 定义 模块: 用来从逻辑上组织python代码(变量 函数 类 逻辑:   实现一个功能) 本质就是.py结尾的python文件(文件名:test.py 对应的模块名就是

    相关 pythonsocket

    python之socket ​ ​ 一、初识socket         socket 是网络连接端点,每个socket都被绑定到一个特定的IP地址和端口。IP地址

    相关 Python词典

    词典,在java中叫做集合,以健值的方式存储,与表(java中叫数组)不同的是,词典的元素没有顺序。你不能通过下标引用元素。词典是通过键来引用。 创建词典

    相关 python‘函数‘

    1.如何定义函数 def关键字,依次写出函数名、括号、括号中的参数和冒号 : 在缩进块中编写函数体,函数的返回值用 return 语句返回 1.空函数  定义一个