在Python中,有很多内置函数可以帮助我们完成各种各样的任务。其中,排序函数是最常用的之一。Python提供了两个非常有用的内置函数,一个是sorted()函数,另一个是sort()函数。这两个函数都可以对列表进行排序,但是它们之间有一些重要的区别,我们需要了解这些区别来决定使用哪个函数。
1. sorted()函数
sorted()函数是一个内置函数,它可以对任何可迭代对象进行排序,包括列表、元组、字符串等。它的语法如下:
sorted(iterable, key=None, reverse=False)
其中,iterable是需要排序的可迭代对象,key是用来比较排序元素的函数,reverse是一个布尔值,表示是否要按降序排序。如果reverse为True,则按降序排序;否则按升序排序。
下面是一个使用sorted()函数进行升序排序的示例:
```python
a = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
b = sorted(a)
print(b)
```
输出结果为:
```python
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
```
如果要按照某个关键字进行排序,则需要使用key参数。例如,下面的示例按照字符串长度进行排序:
```python
a = ['apple', 'banana', 'orange', 'pear']
b = sorted(a, key=len)
print(b)
```
输出结果为:
```python
['pear', 'apple', 'banana', 'orange']
```
2. sort()函数
sort()函数是一个列表方法,它可以对列表进行排序。它的语法如下:
list.sort(key=None, reverse=False)
其中,key和reverse参数的含义与sorted()函数相同。需要注意的是,sort()函数是一个列表方法,它会修改原列表,而不是返回一个新的排序后的列表。
下面是一个使用sort()函数进行升序排序的示例:
```python
a = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
a.sort()
print(a)
```
输出结果为:
```python
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
```
如果要按照某个关键字进行排序,则需要使用key参数。例如,下面的示例按照字符串长度进行排序:
```python
a = ['apple', 'banana', 'orange', 'pear']
a.sort(key=len)
print(a)
```
输出结果为:
```python
['pear', 'apple', 'banana', 'orange']
```
3. 升降序排序
如果要对列表进行降序排序,只需要将reverse参数设置为True即可。例如,下面的示例对列表进行降序排序:
```python
a = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
b = sorted(a, reverse=True)
print(b)
```
输出结果为:
```python
[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
```
如果使用sort()函数,则需要将reverse参数设置为True:
```python
a = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
a.sort(reverse=True)
print(a)
```
输出结果为:
```python
[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
```
4. 复杂对象排序
除了可以对简单对象进行排序之外,sorted()和sort()函数还可以对复杂对象进行排序。例如,下面的示例对一个包含多个字典的列表进行排序:
```python
students = [
{'name': 'Tom', 'age': 20, 'score': 90},
{'name': 'Jerry', 'age': 19, 'score': 80},
{'name': 'Alice', 'age': 18, 'score': 85},
{'name': 'Bob', 'age': 21, 'score': 95}
]
students.sort(key=lambda x: x['score'], reverse=True)
for student in students:
print(student)
```
输出结果为:
```python
{'name': 'Bob', 'age': 21, 'score': 95}
{'name': 'Tom', 'age': 20, 'score': 90}
{'name': 'Alice', 'age': 18, 'score': 85}
{'name': 'Jerry', 'age': 19, 'score': 80}
```
5. 总结
在Python中,排序是一个非常常见的操作。Python提供了两个非常有用的内置函数sorted()和sort(),它们都可以对列表进行排序,但是它们之间有一些重要的区别。sorted()函数是一个内置函数,可以对任何可迭代对象进行排序,返回一个新的排序后的列表;而sort()函数是一个列表方法,可以对列表进行排序,修改原列表。如果要按照某个关键字进行排序,则需要使用key参数。如果要进行降序排序,则需要将reverse参数设置为True。除了可以对简单对象进行排序之外,sorted()和sort()函数还可以对复杂对象进行排序。