李二蛋 发表于 2022-2-28 22:05:04

[1,2,3].reverse()为啥不行;[1,2,3][::-1]为啥就行

如题,
>>> x =
>>> x.reverse()
>>> x

>>> y = .reverse()
>>> y
>>> print(y)
None
>>> print(.reverse())
None
这是为何?切片就可以,语法公式就不可以
>>> z=[::-1]
>>> z

求各位前辈指点{:10_268:}

isdkz 发表于 2022-2-28 22:06:51

本帖最后由 isdkz 于 2022-2-28 22:08 编辑

因为 reverse 是原地操作,它会把原来的列表给逆向排序,

它的返回值就是 None 的,你应该使用 reverse 之后打印原来的列表,

你不要把reverse的结果赋给原来的列表,因为它没有返回值,即返回值为 None

python爱好者. 发表于 2022-3-1 09:41:25

你试试:
print(.reverse())
结果会是:
None
这里的 reverse() 函数是不会有返回值的,所以返回 None (因为 Python 默认机制,没返回值也要返回 None)

李二蛋 发表于 2022-3-1 10:09:08

python爱好者. 发表于 2022-3-1 09:41
你试试:

结果会是:


明白了,感谢您的支持

李二蛋 发表于 2022-3-1 10:13:43

isdkz 发表于 2022-2-28 22:06
因为 reverse 是原地操作,它会把原来的列表给逆向排序,

它的返回值就是 None 的,你应该使用 reverse...

谢谢您,请问可否同理
.sort()/.count()/.index()等都没有返回值?

李二蛋 发表于 2022-3-1 10:14:28

李二蛋 发表于 2022-3-1 10:09
明白了,感谢您的支持

谢谢您,请问可否同理
.sort()/.count()/.index()等都没有返回值?{:10_330:}

python爱好者. 发表于 2022-3-1 10:29:26

李二蛋 发表于 2022-3-1 10:14
谢谢您,请问可否同理
.sort()/.count()/.index()等都没有返回值?

一个方法只会改变其需要改变的对象,而不会有返回值,所以同理

python爱好者. 发表于 2022-3-1 10:33:00

python爱好者. 发表于 2022-3-1 10:29
一个方法只会改变其需要改变的对象,而不会有返回值,所以同理

但也不是所有的都是这样,比如 find(),count(),index() (哎,怎么又说 count(),index(),是了,
好吧,刚才大意了。。。)
它们是返回某个值的,所以返回值不是 "None"!
页: [1]
查看完整版本: [1,2,3].reverse()为啥不行;[1,2,3][::-1]为啥就行