1

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

假设我在变量txt中保存了列表格式的“hello” 。因此

 txt=  ['h','e','l','l','o']

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

txt.reverse()
"."join(txt)

并按预期产生olleh

但是,以下方法不起作用

"".join(txt.reverse())

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

感谢您的帮助!

4

5 回答 5

5

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

"".join(txt.reverse())

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

于 2013-10-16T20:22:50.940 回答
5

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

>>> a = [1, 2]
>>> print a.reverse()
None
>>> a
[2, 1]
>>>

reversed您可以通过使用内置获得您想要的行为:

>>> a = ['a', 'b']
>>> "".join(reversed(a))
'ba'
>>> a
['a', 'b']
>>>
于 2013-10-16T20:24:52.473 回答
3

你的问题是它txt.reverse()不返回反向列表,它返回None

即,txt.reverse()将您的列表反转到位

于 2013-10-16T20:22:34.877 回答
2

您可以reversed改用:

".".join(reversed(txt))
于 2013-10-16T20:24:06.377 回答
1

如前所述list.reverse(),原地替换列表,从而返回None

如果您想要一个可嵌套的版本,您可以使用该reversed功能

In [7]: "".join(reversed(txt))
Out[7]: 'olleh'
于 2013-10-16T20:35:20.617 回答