随笔 - 26  文章 - 0 评论 - 2 阅读 - 39592
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

 对于一个序列,Python提供内置函数Sorted进行排序。

1, 函数原型:

  sorted(iterable, cmp=None, key=None, reverse=False)

参数:

  iterable:需要进行排序的序列(list,tuple, set, map, string)等。

  cmp:比较函数,一般为回调函数,默认的话,基础类型按值比较,对象成员按照地址比较,返回值 0: 两个数相等,1:第一个数大于第二个数,-1:第一个数小于第二个数。

  key:用于比较的字段,一般为回调函数, 对于复杂的序列,设置用于比较的字段,返回值为比较的字段值。

  reverse:是否翻转,默认为从小到大的程序,如果设置成True,则排序为从大到小。

返回值:

  返回排序后的一个新的列表(list),不管排序的是何种序列,返回的都将是一个list。

2,示例:

复制代码
l = [2, 1, 3]
t = (2, 1, 3)
s = {2, 1, 3}
m = {2: 'a', 1: 'b', 3: 'c'}
s1 = '213'
# 操作                   # 输出
print sorted(l)         # [1, 2, 3] 等价 l.sort
print sorted(t)         # [1, 2, 3]
print sorted(s)         # [1, 2, 3]
print sorted(s1)        # ['1', '2', '3']
print sorted(m)         # [1, 2, 3]

# 从大到小排序
print sorted(l, reverse=True)   # [3, 2, 1]

# 自定义排序算法
l = [(3, 2, 1), (1, 2, 3), (2, 3, 1)]
# 用第1个元素的第二个值和第二个元素的第一个值进行比较
def my_cmp(k1, k2):
    return 0 if k1[1] == k2[0] else 1 if k1[1] > k2[0] else -1

print sorted(l, cmp=my_cmp)                 # [(1, 2, 3), (3, 2, 1), (2, 3, 1)]

# 用元素中最后一个值进行排序
print sorted(l, key=lambda x: x[2])         # [(3, 2, 1), (2, 3, 1), (1, 2, 3)]

# 用元素前两个值得和进行比较
print sorted(l, key=lambda x: x[0] + x[1])  # [(1, 2, 3), (3, 2, 1), (2, 3, 1)]
复制代码

 

posted on   lwp-boy  阅读(1169)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 三行代码完成国际化适配,妙~啊~
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示