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() 只能用于列表。

相关文章