0

伙计们请帮助我理解我设法输出的这种奇怪行为。

>>> a = [1, 4, 3, 2]
>>> a
[1, 4, 3, 2]
>>> b = a.sort()
>>> a
[1, 2, 3, 4]
>>> 

为什么“b = a.sort()”会排序列表“a”?

4

1 回答 1

3

a.sort()对就地排序。这意味着 的内容a被更改。
此外,bNone

我认为您正在寻找的是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

于 2013-11-08T06:26:42.700 回答