欢迎访问宙启技术站
智能推送

使用Pythonsorted()函数对列表进行排序。

发布时间:2023-06-23 10:11:12

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()函数可以大大提高程序的效率和可读性。