对于一个序列,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 2020-08-31 21:35  lwp-boy  阅读(1139)  评论(0编辑  收藏  举报