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