📅  最后修改于: 2020-07-16 13:35:03             🧑  作者: Mango
使用内置方法sorted()在Python中对任何序列进行排序非常容易,它可以为您完成所有艰苦的工作。
Sorted()对任何序列(列表,元组)进行排序,并且始终以排序方式返回包含元素的列表,而无需修改原始序列。
语法:orted(iterable, key, reverse)
参数: sorted需要三个参数,其中两个是可选参数。
例子1
x = [2, 8, 1, 4, 6, 3, 7]
print ("返回排序列表 :"),
print (sorted(x))
print ("\n反向排序 :"),
print (sorted(x, reverse = True))
print ("\n原始清单未修改 :"),
print (x)
输出:
返回排序列表 : [1, 2, 3, 4, 6, 7, 8]
反向排序 : [8, 7, 6, 4, 3, 2, 1]
原始清单未修改 : [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))
# 基于ASCII转换的字符串排序
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))
输出:
['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 ']
使用键参数
sorted()函数进行的自定义排序有一个名为’key’的可选参数,该参数将一个函数作为其值。此键函数在排序之前转换每个元素,它获取值并返回1个值,该值随后在排序中使用,而不是原始值。
例如,如果我们在sorted()中传递字符串列表,则会按字母顺序对其进行排序。但是,如果我们指定key = len,即给len函数作为键,则字符串将被传递给len,并返回它的值,即字符串的长度将被排序。这意味着将根据字符串的长度对字符串进行排序
L = ["cccc", "b", "dd", "aaa"]
print ("正常排序 :", sorted(L))
print ("用len排序 :", sorted(L, key = len))
输出:
正常排序 : ['aaa', 'b', 'cccc', 'dd']
用len排序 : ['b', 'dd', 'aaa', 'cccc']
键还以用户定义的功能为其排序基础的值。
# 根据除以7的余数对整数列表进行排序
def func(x):
return x % 7
L = [15, 3, 11, 7]
print ("正常排序 :", sorted(L))
print ("按键排序:", sorted(L, key = func))
输出:
正常排序 : [3, 7, 11, 15]
按键排序: [7, 15, 3, 11]