返回这样的反向列表会发生什么

时间:2014-01-07 19:38:30

标签: python return return-value

我使用此代码返回一个列表[1,2,3,4]

return (list.reverse())

但它根本不会返回正确的结果。我不得不使用

list.reverse()
return list

为什么会这样?当我分手我的问题并做

list1 = list.reverse()

在console和print list1中,它只是打印“list1”

p.s: - 我是初学者,还在学习python。

4 个答案:

答案 0 :(得分:7)

list.reverse方法不返回任何内容。它适用于应用列表中的元素(修改列表)。因此,返回其结果将返回None。这是教授:

>>>[].reverse() == None
True

如果您尝试以相反的顺序返回包含元素的新列表,则执行此操作:

return list[::-1]

这在Python中称为slicing,它用于处理集合。


关于不返回的小注释:这些方法实际上并不是return None。他们不会返回任何价值。但是,评估一个不返回任何值的函数的结果实际上是Python中的None

希望这有帮助!

答案 1 :(得分:5)

这是因为list.reverse()方法就地反转列表 - 不会返回反转列表。请参阅the docs

答案 2 :(得分:1)

使用reversed

return reversed(list)

答案 3 :(得分:1)

通常,如果您将列表反转,则更快的解决方案是

list.reverse()
return list

你可以做到

return reversed(list)

但这通常较慢并且使用更多内存,因为它需要创建一个新对象。

为方便起见,list.reverse()没有返回对象的原因是提醒你它修改了原始列表。