我来自 R 背景,对以下内容感到困惑:
假设我在变量txt中保存了列表格式的“hello” 。因此
txt= ['h','e','l','l','o']
经过一些测试,以下工作:
txt.reverse()
"."join(txt)
并按预期产生olleh。
但是,以下方法不起作用:
"".join(txt.reverse())
它给出了一个错误。我很好奇为什么会这样,因为我认为我可以在函数调用中“嵌套”函数调用?
感谢您的帮助!
我来自 R 背景,对以下内容感到困惑:
假设我在变量txt中保存了列表格式的“hello” 。因此
txt= ['h','e','l','l','o']
经过一些测试,以下工作:
txt.reverse()
"."join(txt)
并按预期产生olleh。
但是,以下方法不起作用:
"".join(txt.reverse())
它给出了一个错误。我很好奇为什么会这样,因为我认为我可以在函数调用中“嵌套”函数调用?
感谢您的帮助!
问题是该reverse()
函数没有返回有用的值(它返回None
),因为它就地反转列表,作为一种避免创建新输出列表的方法。所以这:
"".join(txt.reverse())
...将尝试加入None
,这显然会失败。
作为就地函数,reverse
列表的方法总是返回None
:
>>> a = [1, 2]
>>> print a.reverse()
None
>>> a
[2, 1]
>>>
reversed
您可以通过使用内置获得您想要的行为:
>>> a = ['a', 'b']
>>> "".join(reversed(a))
'ba'
>>> a
['a', 'b']
>>>
你的问题是它txt.reverse()
不返回反向列表,它返回None
,
即,txt.reverse()
将您的列表反转到位
您可以reversed
改用:
".".join(reversed(txt))
如前所述list.reverse()
,原地替换列表,从而返回None
如果您想要一个可嵌套的版本,您可以使用该reversed
功能
In [7]: "".join(reversed(txt))
Out[7]: 'olleh'