如果l是一个列表,比如[9,3,4,1,6],我知道l.sort()将对列表进行排序。我也知道m = sorted(l)会创建一个新的列表m,作为l。
的排序版本我不明白为什么m = l.sort(),不创建m作为l的排序版本,因为这似乎是对m的排序列表的赋值。从以下
可以看出这个问题In [37]: l = [9,3,4,1,6]
In [38]: m=l.sort()
In [39]: m
In [40]: type(m)
Out[40]: NoneType
当然,如果我执行以下操作,则m成为l
的排序版本In [41]: l = [9,3,4,1,6]
In [42]: l.sort()
In [43]: m=l
In [44]: m
Out[44]: [1, 3, 4, 6, 9]
有人可以解释为什么m = l.sort()不能作为作业吗?
答案 0 :(得分:2)
list.sort
改变你的列表以对其进行排序,它不会返回一个新列表。
l = [9, 3, 4, 1, 6]
l.sort()
l # [1, 3, 4, 6, 9]
如果要创建新的排序列表,请使用sorted
。
l = [9, 3, 4, 1, 6]
m = sorted(l)
l # [9, 3, 4, 1, 6]
m # [1, 3, 4, 6, 9]
答案 1 :(得分:1)
答案 2 :(得分:0)
sort()直接在列表上工作,并且具有None返回类型。 因此,如果要将其分配给某个变量并保留原始列表,可以通过以下方式执行此操作:
l = [9,3,4,1,6]
m = sorted(l)
print(m)
输出:
[1, 3, 4, 6, 9]
它会保留原始列表。