sorted函数排序规则(sort函数排序vector)

## sorted函数排序规则

简介

Python 的 `sorted()` 函数是一个内置函数,用于对可迭代对象(例如列表、元组、字符串等)进行排序,并返回一个新的已排序列表。 它不会修改原始的可迭代对象。 `sorted()` 函数的排序规则可以根据需要进行定制,这使得它非常灵活且强大。### 一级标题:默认排序规则如果没有指定任何额外的参数,`sorted()` 函数会使用对象的自然排序(natural ordering)。 这表示:

数字:

从小到大排序。

字符串:

按照字典序(lexicographical order)排序,即按照字母表顺序排序,区分大小写。 例如,'apple' 在 'banana' 之前,'Apple' 在 'apple' 之后。

其他对象:

如果对象实现了 `__lt__` 方法(小于比较),则使用该方法进行比较;否则,会引发 `TypeError`。

示例:

```python numbers = [3, 1, 4, 1, 5, 9, 2, 6] sorted_numbers = sorted(numbers) print(f"Original list: {numbers}") # Output: Original list: [3, 1, 4, 1, 5, 9, 2, 6] print(f"Sorted list: {sorted_numbers}") # Output: Sorted list: [1, 1, 2, 3, 4, 5, 6, 9]words = ["banana", "apple", "orange", "Apple"] sorted_words = sorted(words) print(f"Original list: {words}") # Output: Original list: ['banana', 'apple', 'orange', 'Apple'] print(f"Sorted list: {sorted_words}") # Output: Sorted list: ['Apple', 'apple', 'banana', 'orange'] ```### 二级标题:自定义排序规则 - 使用 `key` 参数`sorted()` 函数的 `key` 参数允许你指定一个函数,该函数将应用于可迭代对象的每个元素,并根据该函数的返回值进行排序。这使得你可以根据任何你想要的标准进行排序。

示例:根据字符串长度排序

```python words = ["banana", "apple", "kiwi", "orange"] sorted_words = sorted(words, key=len) print(sorted_words) # Output: ['kiwi', 'apple', 'banana', 'orange'] ```在这个例子中,`len` 函数作为 `key` 参数传递,`sorted()` 函数会先计算每个字符串的长度,然后根据长度进行排序。

示例:根据对象的某个属性排序

假设我们有一个包含对象的列表:```python class Person:def __init__(self, name, age):self.name = nameself.age = agepeople = [Person("Alice", 30), Person("Bob", 25), Person("Charlie", 35)]# Sort by age sorted_people_by_age = sorted(people, key=lambda person: person.age) print([person.name for person in sorted_people_by_age]) # Output: ['Bob', 'Alice', 'Charlie']# Sort by name sorted_people_by_name = sorted(people, key=lambda person: person.name) print([person.name for person in sorted_people_by_name]) # Output: ['Alice', 'Bob', 'Charlie'] ```这里,`lambda` 函数被用作 `key`,它返回每个 `Person` 对象的 `age` 或 `name` 属性,从而实现按年龄或姓名排序。### 三级标题:反向排序 - 使用 `reverse` 参数`sorted()` 函数的 `reverse` 参数是一个布尔值,用于指定排序顺序。如果 `reverse=True`,则按照降序排序;否则,按照升序排序(默认)。

示例:

```python numbers = [3, 1, 4, 1, 5, 9, 2, 6] sorted_numbers_descending = sorted(numbers, reverse=True) print(sorted_numbers_descending) # Output: [9, 6, 5, 4, 3, 2, 1, 1] ```### 总结`sorted()` 函数是 Python 中一个非常强大的排序工具。通过巧妙地使用 `key` 和 `reverse` 参数,你可以轻松地实现各种自定义排序,满足不同的需求。 理解这些参数是熟练运用 `sorted()` 函数的关键。

sorted函数排序规则**简介**Python 的 `sorted()` 函数是一个内置函数,用于对可迭代对象(例如列表、元组、字符串等)进行排序,并返回一个新的已排序列表。 它不会修改原始的可迭代对象。 `sorted()` 函数的排序规则可以根据需要进行定制,这使得它非常灵活且强大。

一级标题:默认排序规则如果没有指定任何额外的参数,`sorted()` 函数会使用对象的自然排序(natural ordering)。 这表示:* **数字:** 从小到大排序。 * **字符串:** 按照字典序(lexicographical order)排序,即按照字母表顺序排序,区分大小写。 例如,'apple' 在 'banana' 之前,'Apple' 在 'apple' 之后。 * **其他对象:** 如果对象实现了 `__lt__` 方法(小于比较),则使用该方法进行比较;否则,会引发 `TypeError`。**示例:**```python numbers = [3, 1, 4, 1, 5, 9, 2, 6] sorted_numbers = sorted(numbers) print(f"Original list: {numbers}")

Output: Original list: [3, 1, 4, 1, 5, 9, 2, 6] print(f"Sorted list: {sorted_numbers}")

Output: Sorted list: [1, 1, 2, 3, 4, 5, 6, 9]words = ["banana", "apple", "orange", "Apple"] sorted_words = sorted(words) print(f"Original list: {words}")

Output: Original list: ['banana', 'apple', 'orange', 'Apple'] print(f"Sorted list: {sorted_words}")

Output: Sorted list: ['Apple', 'apple', 'banana', 'orange'] ```

二级标题:自定义排序规则 - 使用 `key` 参数`sorted()` 函数的 `key` 参数允许你指定一个函数,该函数将应用于可迭代对象的每个元素,并根据该函数的返回值进行排序。这使得你可以根据任何你想要的标准进行排序。**示例:根据字符串长度排序**```python words = ["banana", "apple", "kiwi", "orange"] sorted_words = sorted(words, key=len) print(sorted_words)

Output: ['kiwi', 'apple', 'banana', 'orange'] ```在这个例子中,`len` 函数作为 `key` 参数传递,`sorted()` 函数会先计算每个字符串的长度,然后根据长度进行排序。**示例:根据对象的某个属性排序**假设我们有一个包含对象的列表:```python class Person:def __init__(self, name, age):self.name = nameself.age = agepeople = [Person("Alice", 30), Person("Bob", 25), Person("Charlie", 35)]

Sort by age sorted_people_by_age = sorted(people, key=lambda person: person.age) print([person.name for person in sorted_people_by_age])

Output: ['Bob', 'Alice', 'Charlie']

Sort by name sorted_people_by_name = sorted(people, key=lambda person: person.name) print([person.name for person in sorted_people_by_name])

Output: ['Alice', 'Bob', 'Charlie'] ```这里,`lambda` 函数被用作 `key`,它返回每个 `Person` 对象的 `age` 或 `name` 属性,从而实现按年龄或姓名排序。

三级标题:反向排序 - 使用 `reverse` 参数`sorted()` 函数的 `reverse` 参数是一个布尔值,用于指定排序顺序。如果 `reverse=True`,则按照降序排序;否则,按照升序排序(默认)。**示例:**```python numbers = [3, 1, 4, 1, 5, 9, 2, 6] sorted_numbers_descending = sorted(numbers, reverse=True) print(sorted_numbers_descending)

Output: [9, 6, 5, 4, 3, 2, 1, 1] ```

总结`sorted()` 函数是 Python 中一个非常强大的排序工具。通过巧妙地使用 `key` 和 `reverse` 参数,你可以轻松地实现各种自定义排序,满足不同的需求。 理解这些参数是熟练运用 `sorted()` 函数的关键。

标签列表