python中.reverse()函数的行为

时间:2013-10-16 20:21:20

标签: python

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

假设我有"你好"以列表格式保存在变量 txt 中。因此

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

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

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

并按预期生成 olleh

但是,以下工作:

"".join(txt.reverse())

它出错了。我很好奇为什么会这样,因为我认为我可以"筑巢"函数调用中的函数调用?

感谢您的帮助!

5 个答案:

答案 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'