为什么lst.reverse()
比lst[::-1]
快那么多?Python3和Python3和Python2似乎都有很大的时间差。在
示例(Python3.5)
>>> from timeit import timeit
>>> lst = list('Crooked Hillary!') * 1000
>>> def TrumpWins(lst):
... lst.reverse()
... return lst
...
>>> def SecondPlace(lst):
... return lst[::-1]
...
>>> timeit(lambda: TrumpWins(lst), number=100000)
0.7976173080969602
>>> timeit(lambda: SecondPlace(lst), number=100000)
4.703373569995165
别开玩笑了。在
lst[::-1]
返回一个新的列表,而list.reverse
只是在原地执行列表的反转。额外的开销来自创建一个新列表。而且,成本/管理费用将与您试图逆转的列表长度成比例增长。在更公平的比较可能是在调用
reverse
方法之前复制列表:几乎相等的计时,由于方法调用的额外开销,
reverse
在本例中丢失,这与使用语言构造的第一种情况不同。在相关问题 更多 >
编程相关推荐