伙计们,请帮助我理解我设法输出的这种奇怪的行为。
>>> a = [1, 4, 3, 2]
>>> a
[1, 4, 3, 2]
>>> b = a.sort()
>>> a
[1, 2, 3, 4]
>>>
为什么“b = a.sort()”排序列表'a'?
答案 0 :(得分:3)
a.sort()
对IN-PLACE进行排序。这意味着a
的内容被更改
此外,b
将为None
我认为您要找的是b = sorted(a)
,它会创建a
内容的排序副本并将其存储在b
>>> a = [1,4,3,2]
>>> b = sorted(a)
>>> a
[1, 4, 3, 2]
>>> b
[1, 2, 3, 4]
>>> b = a.sort()
>>> a
[1, 2, 3, 4]
>>> b
>>>
a.sort()
会对a
进行排序,并将a
的已排序内容分配回a
(这就是排序IN-PLACE的含义)。因此,没有返回值(这与None
的返回值相同。因此调用a.sort()
,对IN-PLACE进行排序,并获取此类排序的返回值(即None
)并将返回值指定为b
(因此b
为无)。
如果您要执行b=a.count(2)
,则会调用a.count(2)
,它会返回一个整数(在本例中为1
)。此返回值已分配给b
,这是b
包含值2
的方式。
>>> a = [1,4,3,2]
>>> a.count(2)
1
>>> b = a.count(2)
>>> b
1
>>>
同样,当您执行b=a.sort()
时,会调用a.sort()
(对a.sort()
的调用会对a
IN-PLACE中的项目进行排序),这会返回None
}。此返回值已分配给b
。
现在,在上面的示例中,a.count(2)
仍计算2
中a
的出现次数,尽管调用a.count(2)
的返回值不是分配给任何东西。这是a.sort()
排序a
的原因背后的确切逻辑,即使结果未分配给任何内容