伙计们请帮助我理解我设法输出的这种奇怪行为。
>>> a = [1, 4, 3, 2]
>>> a
[1, 4, 3, 2]
>>> b = a.sort()
>>> a
[1, 2, 3, 4]
>>>
为什么“b = a.sort()”会排序列表“a”?
伙计们请帮助我理解我设法输出的这种奇怪行为。
>>> a = [1, 4, 3, 2]
>>> a
[1, 4, 3, 2]
>>> b = a.sort()
>>> a
[1, 2, 3, 4]
>>>
为什么“b = a.sort()”会排序列表“a”?
a.sort()对就地排序。这意味着 的内容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()将排序并分配back toa的排序内容(这就是排序 IN-PLACE 的意思)。因此,没有返回值(这与 的返回值相同。调用它对 IN-PLACE 进行排序,并获取这种排序的返回值(即)并将该返回值分配给(因此是没有任何)。aaNonea.sort()Nonebb
如果你要做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()会调用 ,(对IN-PLACEa.sort()中的项目进行排序的调用),它会返回. 这个返回值被赋值给。aNoneb
现在,在上面的例子中,仍然计算ina.count(2)的出现次数,尽管 call 的返回值没有分配给任何东西。这就是为什么排序背后的确切逻辑,即使结果没有分配给任何东西2aa.count(2)a.sort()a