lzb1001 发表于 2023-4-21 11:29:58

关于sort()方法和sorted()方法

>>> list1 =
>>> list2 = list1[:]
>>> list2


>>> list1.sort() # 无返回值
>>> list1
[-98, 0, 1, 13, 18, 32, 34, 54, 76] # 按排序后显示

>>> sorted(list2) # 有返回值
[-98, 0, 1, 13, 18, 32, 34, 54, 76] # 返回排序后的列表
>>> list2
# 仍是原来的排列顺序


小甲鱼教材上说:

1、列表的内建方法sort()是实现列表原地排序 --- 我没看懂和理解,请大神结合上面的例子说明

2、而sorted()是返回一个排序后的新列表 --- 是指sorted(list2) 的返回值吗?但 list2返回的结果还是原来的列表顺序

isdkz 发表于 2023-4-21 11:38:41

1. 列表的内建方法 `sort()` 是实现列表原地排序。原地排序意味着不会创建一个新的列表,而是在原有列表上直接进行排序。也就是说,调用 `sort()` 方法后,原列表将被修改为排序后的列表。在您给出的例子中,`list1.sort()` 就是在 `list1` 上进行原地排序,排序后的 `list1` 变为 `[-98, 0, 1, 13, 18, 32, 34, 54, 76]`。原来的 `list1` 已经被改变。

2. 而 `sorted()` 是返回一个排序后的新列表。`sorted()` 函数会创建一个新的列表,包含原列表中的所有元素,并按顺序排列。在您给出的例子中,`sorted(list2)` 的返回值是一个新的排序后的列表 `[-98, 0, 1, 13, 18, 32, 34, 54, 76]`。这里需要注意的是,`sorted()` 函数不会改变原列表。在例子中,`list2` 的值仍然是 ``,即使我们已经对它使用了 `sorted()` 函数。

总结一下:
- `sort()` 方法直接在原列表上进行排序,不会创建新的列表,原列表会被修改为排序后的列表。
- `sorted()` 函数返回一个排序后的新列表,原列表不会被修改。

lzb1001 发表于 2023-4-21 13:18:13

isdkz 发表于 2023-4-21 11:38
1. 列表的内建方法 `sort()` 是实现列表原地排序。原地排序意味着不会创建一个新的列表,而是在原有列表上 ...

= 吧

isdkz 发表于 2023-4-21 13:26:55

lzb1001 发表于 2023-4-21 13:18
= 吧

lzb1001 发表于 2023-4-22 08:25:04

isdkz 发表于 2023-4-21 13:26


看似差不多的两个列表,但实际却不相等

isdkz 发表于 2023-4-22 08:55:42

lzb1001 发表于 2023-4-22 08:25
看似差不多的两个列表,但实际却不相等

列表是有顺序的,顺序不一样肯定不相等呀
页: [1]
查看完整版本: 关于sort()方法和sorted()方法