📜  Python中的Sorted

📅  最后修改于: 2020-07-16 13:35:03             🧑  作者: Mango

使用内置方法sorted()在Python中对任何序列进行排序非常容易,它可以为您完成所有艰苦的工作。
Sorted()对任何序列(列表,元组)进行排序,并且始终以排序方式返回包含元素的列表,而无需修改原始序列。

语法:orted(iterable, key, reverse)

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

  • iterable序列(列表,元组,字符串)或集合(字典,集合,frozenset)或任何其他需要排序的迭代器。
  • key(可选):可以用作关键字或排序比较基础的功能。
  • reverse(可选):如果设置为true,则可迭代项将按反向(降序)排序,默认情况下将其设置为false。

例子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]