我有这样的示例列表:
l = [1,2,3]
print(l.reverse())
#give None instead [3, 2, 1]
那是怎么回事?我该如何反转清单?
答案 0 :(得分:8)
如何反转清单?
列表被反转。但list.reverse
在适当位置反转,并且不会向调用者返回任何内容。您可以通过在上调用reverse
后打印列表来验证这一点:
>>> l = [1,2,3]
>>> l.reverse()
>>> print(l)
>>> [3, 2, 1]
如有疑问,请使用帮助:
>>> help(list.reverse)
Help on method_descriptor:
reverse(...)
L.reverse() -- reverse *IN PLACE*
(Python 2.7文档)
答案 1 :(得分:4)
来自docs:
list.
的reverse
()强>在适当的位置反转列表的元素。
您可能已经注意到,只修改列表的
insert
,remove
或sort
等方法没有打印返回值 - 它们会返回默认值None
。这是Python中所有可变数据结构的设计原则。
答案 2 :(得分:2)
Python不是一种功能性编程语言 - 它是必不可少的。当您拨打list.reverse()
方法时,您改变原始列表:
l = [1,2,3]
l.reverse()
print l
# prints [3, 2, 1]
返回None
的方法类似于C / C ++ / Java世界中的void
函数/方法。由于list.reverse()
会改变原始列表,因此返回时没有任何意义,因此返回值为None
。
@ YS-L在他的评论中指出you can use Python's list slicing notation to create a reversed copy of the list:
l = [1,2,3]
print l[::-1]
# prints [3, 2, 1]