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

如何利用sorted函数对Python列表进行排序

发布时间:2023-06-25 19:08:21

Python中内置的sorted()函数可以用于对列表进行排序。sorted()函数可以接受一个可迭代对象作为参数,并返回一个新的排序过的列表,而不改变原列表。sorted()函数支持一个可选的参数key,用于指定排序的规则。

例如,对于一个包含整数的列表进行排序:

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_lst = sorted(lst)
print(sorted_lst)

输出结果为:

[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

可以看到,sorted()函数返回了一个新的列表,该列表是排序过的。

另外,还可以通过指定key参数来自定义排序规则。例如,对于一个包含字符串的列表,可以按照字符串长度进行排序:

lst = ['python', 'java', 'javascript', 'ruby', 'php', 'c++']
sorted_lst = sorted(lst, key=len)
print(sorted_lst)

输出结果为:

['php', 'java', 'ruby', 'c++', 'python', 'javascript']

可以看到,sorted()函数按照字符串长度进行了排序。

还可以通过指定reverse参数来指定排序的顺序。例如,对于一个包含整数的列表,可以按照降序进行排序:

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_lst = sorted(lst, reverse=True)
print(sorted_lst)

输出结果为:

[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

可以看到,sorted()函数按照降序进行了排序。

如果列表中的元素是对象,可以通过指定key参数来定义排序规则。例如,对于一个包含Person对象的列表,可以按照年龄进行排序:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

lst = [Person('Tom', 20), Person('Jack', 18), Person('Rose', 22)]
sorted_lst = sorted(lst, key=lambda x: x.age)
for p in sorted_lst:
    print(p.name, p.age)

输出结果为:

Jack 18
Tom 20
Rose 22

可以看到,sorted()函数按照年龄进行了排序。

需要注意的是,sorted()函数返回的是一个新的排序过的列表,而不改变原列表。如果想改变原列表,可以通过列表的sort()方法来进行排序。

总之,sorted()函数是Python中非常实用的一个函数,可以用于对所有可迭代对象进行排序,而且可以灵活地指定排序规则。在实际开发中,经常会用到sorted()函数对列表进行排序。