Python函数之sorted()-对序列排序
发布时间:2023-06-23 07:07:54
Python中的sorted()函数是内置的一个排序函数,可以对可迭代对象进行排序,包括列表、元组、字典、集合等。sorted()函数的参数如下:
sorted(iterable[, key][, reverse])
其中,iterable是要排序的可迭代对象,key是指排序的key函数,reverse是指是否逆序排列,默认为False。
例如,对一个列表进行排序:
>>> l = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] >>> l_sorted = sorted(l) >>> print(l_sorted) [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
可以看到,sorted()函数对列表进行了升序排列。
如果想要对列表进行降序排列,只需要将reverse设置为True:
>>> l_sorted_reverse = sorted(l, reverse=True) >>> print(l_sorted_reverse) [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
可以看到,sorted()函数对列表进行了降序排列。
那么,如何对字典进行排序呢?
由于字典是无序的,因此需要先将字典转化为元组,然后再对元组进行排序。例如,对一个字典按照键进行排序:
>>> d = {'c': 3, 'a': 1, 'b': 2, 'e': 5, 'd': 4}
>>> d_sorted = sorted(d.items(), key=lambda x: x[0])
>>> print(d_sorted)
[('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)]
可以看到,字典d被转化为元组列表,并按照键进行升序排列。
如果想要按照值进行排序,则只需要将key函数改为lambda x: x[1]即可:
>>> d_sorted = sorted(d.items(), key=lambda x: x[1])
>>> print(d_sorted)
[('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)]
现在,字典d按照值进行升序排列。
实际上,sorted()函数的key参数可以接受一个函数作为输入,该函数返回一个值来表示要排序的关键字。因此,可以自定义函数来进行排序。
例如,对一个列表进行按字符串长度排序:
>>> words = ['apple', 'orange', 'peach', 'banana', 'grape'] >>> words_sorted = sorted(words, key=len) >>> print(words_sorted) ['apple', 'peach', 'grape', 'banana', 'orange']
可以看到,对该列表进行了按字符串长度升序排列。
总之,sorted()函数是Python中非常有用的一个内置函数,可以用来对各种可迭代对象进行排序,还可以自定义排序函数来进行排序。需要注意的是,sorted()函数会返回一个新的排好序的对象,而原来的对象不会被改变。
