伙计们请帮助我理解我设法输出的这种奇怪行为。
>>> 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 进行排序,并获取这种排序的返回值(即)并将该返回值分配给(因此是没有任何)。a
a
None
a.sort()
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()
会调用 ,(对IN-PLACEa.sort()
中的项目进行排序的调用),它会返回. 这个返回值被赋值给。a
None
b
现在,在上面的例子中,仍然计算ina.count(2)
的出现次数,尽管 call 的返回值没有分配给任何东西。这就是为什么排序背后的确切逻辑,即使结果没有分配给任何东西2
a
a.count(2)
a.sort()
a