33 列表常用方法——sort()、reverse()

列表对象的 sort() 方法用于按照指定的规则对所有元素进行排序,默认规则是所有元素从小到大升序排序;reverse() 方法用于将列表所有元素逆序或翻转,也就是第一个元素和倒数第一个元素交换位置,第二个元素和倒数第二个元素交换位置,以此类推。

cpp 复制代码
x = [2, 12, 120, 240, 10, 2000, 0]
print(x)

x.sort(key=lambda i: len(str(i)), reverse=True)  # 按转换成字符串以后的长度降序排序
print(x)
x.sort(key=str)  # 按转换成字符串以后的大小升序排序
print(x)
x.sort()  # 按默认规则排序
print(x)
x.reverse()  # 把所有元素翻转或逆序
print(x)

列表对象的 sort() 和 reverse() 分别对列表进行原地排序(in-place sorting)和逆序,没有返回值。 所谓 "原地",意思是用处理后的数据替换原来的数据,列表首地址不变,列表中元素原来的全部丢失。

如果不想丢失原来的顺序,可以使用内置函数 sorted() 和 reversed()。其中,内置函数 sorted() 返回排序后的新列表,参数 key 和 reverse 的含义与列表方法 sort() 完全相同;内置函数 reversed() 返回一个逆序后的 reversed 对象。充分利用列表对象的 sort() 方法和内置函数 sorted() 的 key 参数,可以实现更加复杂的排序。

cpp 复制代码
gameresult = [['Bob', 95.0, 'A'], ['Alan', 86.0, 'C'],
              ['Mandy', 83.5, 'A'], ['Rob', 89.3, 'E']]
print(gameresult)

from operator import itemgetter

print(sorted(gameresult, key=itemgetter(2)))  # 按子列表第3个元素进行升序排序
print(sorted(gameresult, key=itemgetter(2, 0)))
print(sorted(gameresult, key=itemgetter(2, 0), reverse=True))

x = ["what", "I'am", "sorting", "by"]  # 以第一个列表内容为依据
y = ["something", "else", "to", "sort"]  # 对另一个列表内容进行排序
pairs = zip(x, y)  # 把两个列表中的对应位置元素进行配对

print([i[1] for i in sorted(pairs, key=lambda x: x[0], reverse=True)])

s = [[1, 2, 3], [2, 1, 4], [2, 2, 1]]
# 以第二个元素升序,第三个元素降序排序,这里的负号只适用于数值型元素
print((sorted(s, key=lambda i: (i[1], -i[2]))))

t = ['aaaa', 'bc', 'd', 'b', 'ba']
print(sorted(t, key=lambda i: (len(i), i)))  # 先按长度排序,长度一样的正常排序
相关推荐
想要成为计算机高手16 分钟前
4. isaac sim4.2 教程-Core API-Hello robot
人工智能·python·机器人·英伟达·isaac sim·仿真环境
陈敬雷-充电了么-CEO兼CTO1 小时前
复杂任务攻坚:多模态大模型推理技术从 CoT 数据到 RL 优化的突破之路
人工智能·python·神经网络·自然语言处理·chatgpt·aigc·智能体
YOLO大师1 小时前
华为OD机试 2025B卷 - 小明减肥(C++&Python&JAVA&JS&C语言)
c++·python·华为od·华为od机试·华为od2025b卷·华为机试2025b卷·华为od机试2025b卷
xiao5kou4chang6kai42 小时前
【Python-GEE】如何利用Landsat时间序列影像通过调和回归方法提取农作物特征并进行分类
python·gee·森林监测·洪涝灾害·干旱评估·植被变化
kaikaile19952 小时前
使用Python进行数据可视化的初学者指南
开发语言·python·信息可视化
Par@ish2 小时前
【网络安全】恶意 Python 包“psslib”仿冒 passlib,可导致 Windows 系统关闭
windows·python·web安全
意疏2 小时前
【Python篇】PyCharm 安装与基础配置指南
开发语言·python·pycharm
冬天给予的预感4 小时前
DAY 54 Inception网络及其思考
网络·python·深度学习
钢铁男儿4 小时前
PyQt5高级界而控件(容器:装载更多的控件QDockWidget)
数据库·python·qt
亿牛云爬虫专家8 小时前
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
分布式·python·架构·kubernetes·爬虫代理·监测·采集