python sorted方法源代码_Python Sorted()用法及代码示例

在Python中,使用内置方法sorted()对任何序列进行排序非常容易,它可以为您完成所有艰苦的工作。

Sorted()对任何序列(列表,元组)进行排序,并始终以排序方式返回包含元素的列表,而无需修改原始序列。

用法:排序(可迭代,键,反向)

参数:sorted需要三个参数,其中两个是可选参数。

Iterable:序列(列表,元组,字符串)或集合(字典,集合,frozenset)或任何其他需要排序的迭代器。

Key(可选):将用作键或排序比较基础的函数。

Reverse(可选):如果设置为true,则可迭代对象将以反向(降序)排序,默认情况下将其设置为false。

例子1

x = [2, 8, 1, 4, 6, 3, 7]

print "Sorted List returned:",

print sorted(x)

print "\nReverse sort:",

print sorted(x, reverse = True)

print "\nOriginal list not modified:",

print x

Output:

Sorted List returned:[1, 2, 3, 4, 6, 7, 8]

Reverse sort:[8, 7, 6, 4, 3, 2, 1]

Original list not modified:[2, 8, 1, 4, 6, 3, 7]

示例2:排序不同的数据类型

# List

x = ['q', 'w', 'r', 'e', 't', 'y']

print sorted(x)

# Tuple

x = ('q', 'w', 'e', 'r', 't', 'y')

print sorted(x)

# String-sorted based on ASCII translations

x = "python"

print sorted(x)

# Dictionary

x = {'q':1, 'w':2, 'e':3, 'r':4, 't':5, 'y':6}

print sorted(x)

# Set

x = {'q', 'w', 'e', 'r', 't', 'y'}

print sorted(x)

# Frozen Set

x = frozenset(('q', 'w', 'e', 'r', 't', 'y'))

print sorted(x)

Output:

['e', 'q', 'r', 't', 'w', 'y']

['e', 'q', 'r', 't', 'w', 'y']

['h', 'n', 'o', 'p', 't', 'y']

['e', 'q', 'r', 't', 'w', 'y']

['e', 'q', 'r', 't', 'w', 'y']

['e', 'q', 'r', 't', 'w', 'y']

使用key参数进行自定义排序

sorted()函数具有一个称为“键”的可选参数,该参数将一个函数作为其值。此键函数在排序之前转换每个元素,它获取值并返回1个值,该值随后在排序中使用,而不是原始值。

例如,如果我们在sorted()中传递字符串列表,则会按字母顺序对其进行排序。但是如果我们指定key = len,即给len函数作为key,那么字符串将被传递给len,并返回其值,即字符串的长度将被排序。这意味着将根据字符串的长度对字符串进行排序

L = ["cccc", "b", "dd", "aaa"]

print "Normal sort:", sorted(L)

print "Sort with len:", sorted(L, key = len)

Output:

Normal sort:['aaa', 'b', 'cccc', 'dd']

Sort with len:['b', 'dd', 'aaa', 'cccc']

键还以用户定义的功能为其排序基础的值。

# Sort a list of integers based on

# their remainder on dividing from 7

def func(x):

return x % 7

L = [15, 3, 11, 7]

print "Normal sort:", sorted(L)

print "Sorted with key:", sorted(L, key = func)

Output:

Normal sort:[3, 7, 11, 15]

Sorted with key:[7, 15, 3, 11]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值