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

Python sorted()函数: 排序数据轻松简单

发布时间:2023-06-07 15:40:17

在Python中,有一个非常方便的内置函数sorted()。它可以对各种类型的数据进行排序,包括数字、字符串、列表、元组、字典等。本文将介绍sorted()函数的用法和例子。

1.基本用法

sorted()函数可以接收一个可迭代对象(比如列表、元组等)作为参数,并返回一个已排序的新的列表。默认情况下,该函数按升序排序。下面是一些基本的例子:

1.1 对数字列表进行排序

nums = [5, 3, 8, 2, 9, 1]
sorted_nums = sorted(nums)
print(sorted_nums)   # 输出 [1, 2, 3, 5, 8, 9]

1.2 对字符串列表进行排序

fruits = ['apple', 'banana', 'orange', 'grape', 'pear']
sorted_fruits = sorted(fruits)
print(sorted_fruits)   # 输出 ['apple', 'banana', 'grape', 'orange', 'pear']

2.高级用法

sorted()函数还可以接受一些可选的参数,以便更好地控制排序的过程。

2.1 reverse参数

reverse参数是一个布尔型变量,它确定是按升序还是按降序排序。

nums = [5, 3, 8, 2, 9, 1]
sorted_nums_ascending = sorted(nums)
print(sorted_nums_ascending)   # 输出 [1, 2, 3, 5, 8, 9]

sorted_nums_descending = sorted(nums, reverse=True)
print(sorted_nums_descending)  # 输出 [9, 8, 5, 3, 2, 1]

2.2 key参数

key参数是一个函数,用于指定排序的依据。如果没有指定key参数,则按默认顺序排序。

fruits = ['apple', 'banana', 'orange', 'grape', 'pear']
sorted_fruits_by_length = sorted(fruits, key=len)
print(sorted_fruits_by_length)   # 输出 ['pear', 'apple', 'grape', 'banana', 'orange']

在上面的例子中,key=len表示按照元素的长度(也就是字符串的长度)进行排序。

2.3 lambda函数

lambda函数类似于普通函数,但它是一个匿名函数,可以在需要时使用。lambda函数可以作为key参数传递给sorted()函数。

students = [('Tom', 89), ('Lucy', 92), ('Tim', 85), ('Kevin', 90)]
sorted_students_by_score = sorted(students, key=lambda x: x[1])
print(sorted_students_by_score)   # 输出 [('Tim', 85), ('Tom', 89), ('Kevin', 90), ('Lucy', 92)]

在上面的例子中,我们使用了一个lambda函数来按照元素的第二个值(也就是学生的分数)进行排序。

3.注意事项

需要注意的是,使用sorted()函数对原列表进行排序时,原列表并不会被修改。sorted()函数返回的是一个新的排序后的列表。

nums = [5, 3, 8, 2, 9, 1]
sorted_nums = sorted(nums)
print(sorted_nums)   # 输出 [1, 2, 3, 5, 8, 9]
print(nums)          # 输出 [5, 3, 8, 2, 9, 1]

此外,对于包含元素类型不同的列表进行排序时,可能会出现TypeError异常。这是因为Python不知道如何比较这些元素。为了避免这种情况,我们可以使用key参数来指定排序的依据。

4.总结

在本文中,我们已经介绍了sorted()函数的基本用法和高级用法。使用这个函数能够极大地简化数据排序的过程。需要注意的是,sorted()函数返回的是一个新的排序后的列表,原列表并没有发生改变。