Python中List变量reverse后,结果为None

Python中List变量reverse后,结果为None

假设有列表a=[1,2,3,4,5,6],调用a = a.reverse()后,结果不是期望的,颠倒过来的list,却是None:

print( a)

值为:

a= None

【解决过程】

1.找了下,结果只找到这个官方解释:

5.6.4. Mutable Sequence Types

s.reverse() reverses the items of s in place

Note:The sort() and reverse() methods modify the list in place for economy of space when sorting or reversing a large list. To remind you that they operate by side effect, they don’t return the sorted or reversed list.

但是什么是side effect,还是不懂。

2.后来找到:a=[1,2,3,4].reverse() – why "a" is None?,看到其讨论说到:

b = [1,2,3,4]
a = b.reverse()
would change the value of b.

才想起来,原来这个reverse函数,针对列表的操作,其结果是直接改变列表本身(为了节省空间),所以,直接就把原先的list改为你所想要的reversed后的结果了,而返回值,是空的,不返回任何值。

所以,本身直接使用:

a.reverse(); # -> is OK, the self is reversed !!!

即可实现把a翻转。

【总结】

对于List等Sequence等类型的变量,比如此处的List变量,其内置函数reverse,是直接操作变量本身,调用reverse后,变量本身的值就是reverse后的值了,所以不能出现:

?
1
reversedList = orignalList.reverse();

的用法,而应该是:

?
1
2
orignalList.reverse();
reversedList = orignalList;

此原则,同样适用于sort函数。


Python列表reverse()方法用于将列表中的对象反转位置。

语法

以下是reverse()方法的语法 -

list.reverse()
Python

参数

  • NA

返回值

  • 此方法不返回任何值,但从列表中反转给定对象。

示例

以下示例显示了reverse()方法的用法。

#!/usr/bin/python3
list1 = ['physics', 'Biology', 'chemistry', 'maths']
list1.reverse()
print ("list now : ", list1)
Python

当运行上面的程序,它产生以下结果 -

List : [ 'hema' , 'xyz' , 'abc' , 'zara' , 'xyz' , 126 ]

在函数中如果我们输入:

return list.reverse()

则会出现错误。因为正如前所述,列表的reverse函数不返回任何值,而return是需要返回值的。如果想要返回反转之后的列表值,只需要:

list.reverse
return list

转载于:Python中List变量reverse后,结果为None

  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值