使用Pythonsorted()函数对列表进行排序。
Python中的sorted()函数是用于对列表或其他可迭代对象进行排序的内置函数。使用sorted()函数可以按照指定的排序规则对元素进行排序,最终返回一个按照指定规则排序的新列表。本文将对Python中的sorted()函数进行详细讲解。
1. 排序方法
sorted()函数有两种排序方法:
a. 升序排序:默认情况下,sorted()函数会按照升序对列表进行排序。可以通过reverse=True参数来实现降序排序。例如:
l = [3, 2, 1, 5, 4] print(sorted(l)) # [1, 2, 3, 4, 5] print(sorted(l, reverse=True)) # [5, 4, 3, 2, 1]
b. 自定义排序:可以通过key参数来自定义排序规则。这个参数接受一个函数作为参数,用于对每个元素进行比较。例如:
l = ['george', 'Jenny', 'Michell'] print(sorted(l)) # ['Jenny', 'Michell', 'george'] print(sorted(l, key=str.lower)) # ['george', 'Jenny', 'Michell']
2. 对于字典的排序
Python中的sorted()函数可以对字典进行排序。但需要注意,sorted()对字典进行排序时,只会对字典的键进行排序。如果要对字典的值进行排序,在排序完成之后再根据键获取它们的值。例如:
d = {'apple': 3, 'banana': 2, 'orange': 1, 'pear': 4}
print(sorted(d)) # ['apple', 'banana', 'orange', 'pear']
d_sorted_keys = sorted(d, key=d.get)
for k in d_sorted_keys:
print(k, d[k])
输出结果如下:
['apple', 'banana', 'orange', 'pear'] orange 1 banana 2 apple 3 pear 4
3. sorted()函数与列表的sort()方法的区别
sorted()函数与列表的sort()方法都可以对列表进行排序。但二者存在以下区别:
a. sorted()函数不会改变原始列表,而是返回一个排序后的新列表。
b. sort()方法会改变原始列表,并返回None。
c. sorted()函数可以对任何可迭代对象进行排序,而sort()方法仅能对列表进行排序。
4. sorted()函数的高级应用:多级排序
多级排序是指在有两个或以上的排序条件时,可以先按照 个条件进行排序,当 个条件相同时再按照第二个条件继续排序。例如:
l = [('amy', 20, 100), ('bob', 25, 80), ('cat', 20, 90), ('dave', 25, 95)]
sorted_l = sorted(l, key=lambda x: (x[1], x[2]))
print(sorted_l)
输出结果为:
[('amy', 20, 100), ('cat', 20, 90), ('bob', 25, 80), ('dave', 25, 95)]
在这个例子中,我们先按照年龄进行排序,年龄相同时,再按照成绩进行排序。这个排序规则是通过lambda表达式实现的。lambda表达式接受一个参数x,返回一个元组,元组中 个元素是x的年龄,第二个元素是x的成绩。
5. 总结
sorted()函数是Python内置的对可迭代对象进行排序的函数。它有很多高级特性,例如:可以自定义排序规则、可以对字典进行排序、可以进行多级排序等。在实际应用中,使用sorted()函数可以大大提高程序的效率和可读性。
