sort和sorted函数的区别python
sort() 和 sorted() 是 Python 中用于对列表进行排序的函数,它们有以下几个区别:
1. sort() 是列表的一个方法,它会直接在原列表上进行排序,而 sorted() 是一个内建函数,它会返回一个新的已排序列表,原列表不会被修改。
示例:
```python
# 使用 sort() 对列表排序
my_list = [3
1
4
2
5]
my_list.sort()
print(my_list) # 输出:[1
2
3
4
5]
# 使用 sorted() 返回已排序的新列表
my_list = [3
1
4
2
5]
new_list = sorted(my_list)
print(my_list) # 输出:[3
1
4
2
5]
print(new_list) # 输出:[1
2
3
4
5]
```
2. sort() 方法是就地排序,它不会返回任何值;而 sorted() 函数是非就地排序,它会返回一个新的已排序列表。
示例:
```python
# sort() 方法没有返回值
my_list = [3
1
4
2
5]
result = my_list.sort()
print(result) # 输出:None
# sorted() 函数返回一个新的已排序列表
my_list = [3
1
4
2
5]
new_list = sorted(my_list)
print(new_list) # 输出:[1
2
3
4
5]
```
3. sort() 方法只能用于可变的列表(list),而 sorted() 函数可以用于任何可迭代的对象。
示例:
```python
# sorted() 函数可以用于不可变的元组
my_tuple = (3
1
4
2
5)
new_tuple = sorted(my_tuple)
print(new_tuple) # 输出:[1
2
3
4
5]
# sort() 方法只能用于可变的列表
my_string = "hello"
my_string.sort() # 报错:AttributeError: 'str' object has no attribute 'sort'
```
总结:
sort() 和 sorted() 都可以用于排序,但是它们的用法和效果不同。如果你需要在原列表上就地排序,可以使用 sort() 方法;而如果你需要返回一个已排序的新列表,可以使用 sorted() 函数。另外,sorted() 还可以用于任何可迭代的对象,而 sort() 只能用于列表。