Python中的sorted函数:按指定方式排序数据
Python中的sorted函数是一个非常常用的排序函数。它可以按照指定的方式对数据进行排序。在本文中,我们将对sorted函数的使用进行介绍,并对其参数及其常用的使用方式进行解释。
基本用法
sorted函数可以对列表、元组、字符串等可迭代对象进行排序。它的基本使用方式如下:
sorted(iterable, key=None, reverse=False)
其中,iterable表示要排序的可迭代对象,key表示排序时所用的函数,reverse表示是否进行降序排列,当reverse为True时表示降序,否则为升序。
示例:
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_lst = sorted(lst) #[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
上面的代码先定义了一个列表lst,然后使用sorted函数对lst进行排序,并将结果保存到sorted_lst中。由于没有指定key和reverse,所以默认按升序排列。
key参数的使用
key参数表示排序时所用的函数。例如,可以按照字符串长度或者绝对值大小进行排序。
示例:
lst = ["Hello", "World", "Python", "is", "fun"]
sorted_lst1 = sorted(lst, key=len) #按字符串长度排序,['is', 'fun', 'Hello', 'World', 'Python']
sorted_lst2 = sorted(lst, key=str.lower) #按字母顺序排序,['fun', 'Hello', 'is', 'Python', 'World']
上面的代码分别按照字符串长度和字母顺序对lst进行排序,其中key参数分别为len和str.lower,如果不指定key,则默认按照元素的大小进行排序。
reverse参数的使用
reverse参数用来控制升序或降序排列。当reverse为True时表示降序,否则为升序。
示例:
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_lst = sorted(lst, reverse=True) #[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
上面的代码对lst进行降序排列,即最大的元素排在最前面。
自定义比较函数
除了使用内置函数作为key参数,还可以自定义比较函数。自定义比较函数是一个参数为一个元素的函数,返回值是一个关键字,这个关键字将作为排序依据。
示例:
lst = ["A", "b", "c", "D", "e"]
def my_cmp(x):
if x.islower():
return (0, x)
elif x.isupper():
return (1, x.lower())
else:
return (2, x)
sorted_lst = sorted(lst, key=my_cmp) #['A', 'b', 'c', 'D', 'e']
上面的代码中,使用自定义函数my_cmp作为key参数,该函数将字符串分为3种情况:“小写字母”,“大写字母”和“其他字符”,并对它们分别进行排序。
总结
sorted函数是Python中非常常用的函数之一,它可以对列表、元组、字符串等可迭代对象进行排序。通过key参数,我们可以按照元素的某些属性进行排序;通过reverse参数,我们可以控制升序或降序排列;而通过自定义比较函数,我们可以完全按照自己的需求进行排序。
