Python中的sorted()函数:根据指定规则对列表进行排序。
Python中的sorted()函数是一个内置函数,用于对可迭代对象(例如列表、元组或字典)进行排序。该函数返回一个新的经过排序的列表,而不会改变原有对象。sorted()函数可以接收很多参数,包括可迭代对象、键函数和排序顺序等。
sorted()函数语法
在Python中,sorted()函数的语法是:
sorted(iterable, key=None, reverse=False)
其中,
- iterable:必须是可迭代的,例如列表、元组、字符串或字典等。
- key:指定一个函数,用于将每个元素转换为比较键,以便比较排序。
- reverse:如果为True,则降序排列;如果为False,则升序排列。默认为False。
示例:
假设我们有一个列表,需要对其中的数字进行正序排序:
numbers = [6, 3, 2, 8, 4, 7, 1, 9, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers)
输出结果为:[1, 2, 3, 4, 5, 6, 7, 8, 9]
对一个字典进行按值排序:
scores = {'Tom': 90, 'Jerry': 80, 'Mickey': 95, 'Donald': 88}
sorted_scores = sorted(scores.items(), key=lambda x: x[1], reverse=True)
print(sorted_scores)
输出结果为:[('Mickey', 95), ('Tom', 90), ('Donald', 88), ('Jerry', 80)]
在这个例子中,我们将scores字典转换为包含键-值对的元组列表。然后我们通过key参数指定一个lambda函数,用于将每个元组转换为它的第二个元素(即字典中的值)。最后,我们指定reverse参数为True以进行降序排序。
常用的排序规则
sorted()函数提供了多种用于排序的规则。以下是一些常用的:
- 升序排序:按递增顺序排列。
- 降序排序:按递减顺序排列。
- 按绝对值排序:按每个元素的绝对值进行排序。
- 按字符串长度排序:按每个字符串的长度进行排序。
- 按字典中的值排序:按每个键-值对中的值进行排序。
其中,前两种规则是最基本的排序方式,而其他规则通常需要通过key参数指定一个函数来实现。以下是一些示例:
升序排序:
numbers = [6, 3, 2, 8, 4, 7, 1, 9, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers)
输出结果为:[1, 2, 3, 4, 5, 6, 7, 8, 9]
降序排序:
numbers = [6, 3, 2, 8, 4, 7, 1, 9, 5]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers)
输出结果为:[9, 8, 7, 6, 5, 4, 3, 2, 1]
按绝对值排序:
numbers = [-6, -3, 2, 8, -4, 7, 1, 9, -5]
sorted_numbers = sorted(numbers, key=abs)
print(sorted_numbers)
输出结果为:[1, 2, -3, 4, -5, -6, 7, 8, 9]
在这个例子中,我们使用了一个lambda函数来指定key参数。该函数将每个元素转换为其绝对值用于比较排序。因此,列表中的负数现在在列表的正面。
按字符串长度排序:
fruits = ['pear', 'banana', 'apple', 'orange']
sorted_fruits = sorted(fruits, key=len)
print(sorted_fruits)
输出结果为:['pear', 'apple', 'banana', 'orange']
在这个例子中,我们使用了内置的len()函数来计算每个字符串的长度用于比较排序。
按字典中的值排序:
scores = {'Tom': 90, 'Jerry': 80, 'Mickey': 95, 'Donald': 88}
sorted_scores = sorted(scores.items(), key=lambda x: x[1], reverse=True)
print(sorted_scores)
输出结果为:[('Mickey', 95), ('Tom', 90), ('Donald', 88), ('Jerry', 80)]
我们已经在前面的示例中看到了如何按字典中的值排序。该示例使用了一个lambda函数来指定key参数,该函数返回每个键-值对的值用于比较排序。
总结
通过sorted()函数,Python提供了一种简单而强大的方式来按不同的规则对可迭代对象进行排序。我们可以通过指定key参数来自定义排序规则,并通过reverse参数来选择升序排序或降序排序。通过灵活使用sorted()函数和自定义的键函数,我们可以快速地解决各种实际问题。
