Python中的sort函数详解及例子
发布时间:2023-07-03 21:12:58
在Python中,可以使用sort()函数对列表进行排序。sort()函数是一个就地函数,这意味着它会修改列表本身,而不是返回一个新的排序后的列表。sort()函数使用一种称为“原地排序”的算法来对列表进行排序,这个算法的平均时间复杂度是O(nlogn)。
sort()函数有两个可选的参数,key和reverse。key参数可以指定一个用于排序的函数,而reverse参数可以用来控制排序的顺序,默认为False(升序排序)。
下面是一些使用sort()函数的例子:
1. 对整数列表进行升序排序
nums = [3, 2, 1, 4, 5] nums.sort() print(nums) # 输出 [1, 2, 3, 4, 5]
2. 对字符串列表进行排序
fruits = ['apple', 'banana', 'orange', 'pear'] fruits.sort() print(fruits) # 输出 ['apple', 'banana', 'orange', 'pear']
3. 对列表中的元组进行排序
students = [('Tom', 75), ('Jerry', 80), ('Mike', 65), ('John', 90)]
students.sort(key=lambda x: x[1])
print(students) # 输出 [('Mike', 65), ('Tom', 75), ('Jerry', 80), ('John', 90)]
上面的例子中,我们使用了key参数来指定一个匿名函数,这个匿名函数接受每个元素作为输入,并返回可用于排序的键。在这个例子中,我们根据学生的分数来进行排序。
4. 对字典列表进行排序
people = [{'name': 'Tom', 'age': 25}, {'name': 'Jerry', 'age': 30}, {'name': 'Mike', 'age': 20}]
people.sort(key=lambda x: x['age'])
print(people) # 输出 [{'name': 'Mike', 'age': 20}, {'name': 'Tom', 'age': 25}, {'name': 'Jerry', 'age': 30}]
在这个例子中,我们使用了key参数来指定一个匿名函数,这个匿名函数接受每个元素作为输入,并返回可用于排序的键。在这个例子中,我们根据人的年龄来进行排序。
5. 对对象列表进行排序
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"Person(name='{self.name}', age={self.age})"
people = [Person('Tom', 25), Person('Jerry', 30), Person('Mike', 20)]
people.sort(key=lambda x: x.age)
print(people) # 输出 [Person(name='Mike', age=20), Person(name='Tom', age=25), Person(name='Jerry', age=30)]
在这个例子中,我们定义了一个名为Person的类,这个类有两个属性:name和age。我们创建了一个包含Person对象的列表,并使用sort()函数来根据人的年龄进行排序。
需要注意的是,sort()函数是原地排序的,也就是说它会修改列表本身。如果我们希望保留原始列表,可以使用sorted()函数来进行排序,它会返回一个新的排序后的列表。
