python中.reverse()函数的行为

use*_*015 1 python

我来自R背景,我对以下内容感到困惑:

假设我以变量txt中保存的列表格式"hello" .从而

 txt=  ['h','e','l','l','o']
Run Code Online (Sandbox Code Playgroud)

经过一些测试,以下工作:

txt.reverse()
"."join(txt)
Run Code Online (Sandbox Code Playgroud)

并按预期生产olleh.

但是,以下就不能正常工作:

"".join(txt.reverse())
Run Code Online (Sandbox Code Playgroud)

它给出了一个错误.我很好奇为什么会这样,因为我认为我可以在函数调用中"嵌套"函数调用?

谢谢你的帮忙!

Ósc*_*pez 5

问题是该reverse()函数没有返回有用的值(它返回None),因为它会就地反转列表,以避免创建新的输出列表.所以这:

"".join(txt.reverse())
Run Code Online (Sandbox Code Playgroud)

......会尝试加入None,这显然会失败.


iCo*_*dez 5

作为就地函数,reverse列表的方法总是返回None:

>>> a = [1, 2]
>>> print a.reverse()
None
>>> a
[2, 1]
>>>
Run Code Online (Sandbox Code Playgroud)

您可以使用reversed内置函数获得所需的行为:

>>> a = ['a', 'b']
>>> "".join(reversed(a))
'ba'
>>> a
['a', 'b']
>>>
Run Code Online (Sandbox Code Playgroud)