一、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函数都支持传递关键字参数来自定义排序方式。