Python中的sorted函数-快速地对可迭代对象进行排序
发布时间:2023-07-06 17:11:34
在Python中,我们经常需要对数据进行排序操作。sorted()函数是Python内置的一个非常强大和方便的排序函数,可以快速地对可迭代对象进行排序。
sorted()函数的基本用法是sorted(iterable, key=None, reverse=False)。其中,iterable是一个可迭代对象,可以是列表、元组、字典的键或值等;key是一个用来排序的函数,用来指定排序的依据;reverse为True时表示按降序排序,默认为False表示升序排序。
使用sorted()函数可以对列表、元组进行排序,例如:
nums = [9, 4, 5, 2, 7, 1]
sorted_nums = sorted(nums)
print(sorted_nums) # [1, 2, 4, 5, 7, 9]
names = ('John', 'Alice', 'Bob', 'David')
sorted_names = sorted(names)
print(sorted_names) # ['Alice', 'Bob', 'David', 'John']
如果我们想按照某个特定的规则来排序,可以使用key参数来指定排序的依据。key参数需要一个函数作为输入,这个函数用来将可迭代对象的每个元素映射为一个用于比较的键。例如:
students = [('Tom', 80), ('Bob', 90), ('Alice', 70)]
# 按成绩从低到高排序
sorted_students = sorted(students, key=lambda x: x[1])
print(sorted_students) # [('Alice', 70), ('Tom', 80), ('Bob', 90)]
# 按姓名的长度从长到短排序
sorted_students = sorted(students, key=lambda x: len(x[0]), reverse=True)
print(sorted_students) # [('Alice', 70), ('Bob', 90), ('Tom', 80)]
除了列表、元组,sorted()函数还可以对字典进行排序。当对字典进行排序时,sorted()函数会根据字典的键进行排序,并返回一个按键排序的列表。例如:
scores = {'Tom': 80, 'Bob': 90, 'Alice': 70}
sorted_scores = sorted(scores)
print(sorted_scores) # ['Alice', 'Bob', 'Tom']
如果我们希望根据字典的值来排序,可以使用key参数结合字典的items()方法来完成。例如:
sorted_scores = sorted(scores.items(), key=lambda x: x[1])
print(sorted_scores) # [('Alice', 70), ('Tom', 80), ('Bob', 90)]
需要注意的是,sorted()函数并不会改变原可迭代对象,而是返回一个新的排序后的列表。如果我们希望原对象进行排序,可以使用列表的sort()方法。例如:
nums = [9, 4, 5, 2, 7, 1] nums.sort() print(nums) # [1, 2, 4, 5, 7, 9]
总结来说,sorted()函数是Python中非常常用和方便的排序函数。它可以快速地对可迭代对象进行排序,并且可以根据需要指定排序的依据。在实际的编程中,我们可以根据具体需求灵活运用sorted()函数来完成各种排序操作。
