【发布时间】:2011-04-29 22:23:43
【问题描述】:
我对 python 很陌生,你会知道的。
如果我有一个清单:
a = [1,2,3,2,1]
这评估为真:
a == a[::-1]
...但结果为假:
a == a.reverse()
为什么会这样?
【问题讨论】:
标签: python list equivalence
我对 python 很陌生,你会知道的。
如果我有一个清单:
a = [1,2,3,2,1]
这评估为真:
a == a[::-1]
...但结果为假:
a == a.reverse()
为什么会这样?
【问题讨论】:
标签: python list equivalence
因为.reverse() 原地反转列表并返回无:
>>> print a.reverse()
None
而a == None 的计算结果为False。
【讨论】:
a.reverse()没有返回值,所以比较是
a==无
这是错误的
您可以通过以下方式检查:
>>> str(a.reversed())
'None'
更好:
>>> (id(a.reverse()), id(None))
你会看到相同的地址
【讨论】:
如果您想要列表的新副本,请改用 reversed()。
a == list(reversed(a))
【讨论】: