当前分类:python>>正文

用Python的sort方法实现列表排序

来源:互联网   更新时间:2023年7月11日  

Python 笔记

一、sort方法简介

sort方法是Python内置列表对象提供的排序方法,它可以对列表中的元素进行排序。sort方法有两种形式,一种是对原列表进行排序,另一种是创建一个新的排序后的列表。

二、对原列表进行排序

我们可以使用sort方法对列表进行排序,这样可以直接修改原列表:


lst = [5, 3, 7, 1, 9]
lst.sort()
print(lst)

输出结果为:[1, 3, 5, 7, 9]

sort方法也允许使用reverse参数来进行降序排序,默认值为False,即升序排序。


lst = [5, 3, 7, 1, 9]
lst.sort(reverse=True)
print(lst)

输出结果为:[9, 7, 5, 3, 1]

三、创建一个新的排序后的列表

除了可以对原列表进行排序外,sort方法还可以返回一个新的排好序的列表,而不影响原列表。我们可以使用sorted函数来实现这个功能:


lst = [5, 3, 7, 1, 9]
new_lst = sorted(lst)
print(lst)
print(new_lst)

输出结果为:


[5, 3, 7, 1, 9]
[1, 3, 5, 7, 9]

sorted函数也允许使用reverse参数来进行降序排序,默认值为False,即升序排序。


lst = [5, 3, 7, 1, 9]
new_lst = sorted(lst, reverse=True)
print(lst)
print(new_lst)

输出结果为:


[5, 3, 7, 1, 9]
[9, 7, 5, 3, 1]

四、排序自定义类型

如果要对自定义类型进行排序,我们需要通过实现该类型的__lt__(“小于”)方法来告诉sort函数如何比较对象。

例如,下面的代码演示了如何对一个简单的Person类进行排序,按照年龄升序排序:


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

    def __lt__(self, other):
        return self.age < other.age

p1 = Person('John', 32)
p2 = Person('Jane', 28)
p3 = Person('Michael', 45)

lst = [p1, p2, p3]
lst.sort()

for p in lst:
    print(p.name, p.age)

输出结果为:


Jane 28
John 32
Michael 45

五、对列表中元素的排序方式进行自定义

在Python中,我们可以用key参数将序列中的每个元素传递给一个函数,然后根据该函数的返回值进行排序。即sort方法会根据key函数计算出来的值进行排序。

下面的示例将使用key函数将字符串列表中的元素按照字符串长度进行排序:


lst = ['python', 'java', 'c', 'golang', 'ruby']
lst.sort(key=lambda x: len(x))
print(lst)

输出结果为:['c', 'java', 'ruby', 'python', 'golang']

lambda表达式用于确保排序函数的简洁性。你可以使用任何可以返回一个值的函数(映射),只要它接受列表成员作为输入并返回排序键。

六、总结

sort方法是Python内置列表对象提供的排序方法,它可以对列表中的元素进行排序。我们可以通过调用sort方法对原列表进行排序,或者使用sorted函数创建一个新的排好序的列表,同时,sort方法和sorted函数都支持传递关键字参数来自定义排序方式。

本文固定链接:https://6yhj.com/leku-p-4763.html  版权所有,转载请保留本地址!
[猜你喜欢]

标签: sublime