reverse方法和reversed内置函数哪个“更好”?
通常来说,reverse方法和reversed这个内置函数,哪个更符合Python的风格、哪个更好用、更快呢?
下面是它们的实际使用情况:
_list = list(xrange(4))
print _list
rlist = list(reversed(_list))
print rlist
_list.reverse()
print _list
8 个回答
18
看起来这两者之间差别很大。我原本以为是相反的。为什么在一个列表中重新排列值比从迭代器创建一个新列表要快呢?
from decorators import bench
_list = range(10 ** 6)
@ bench
def foo():
list(reversed(_list))
@ bench
def bar():
_list.reverse()
foo()
bar()
print foo.time
print bar.time
0.167278051376
0.0122621059418
57
foo.reverse()
这个方法会真的把容器里的元素顺序反转过来。而 reversed()
则不是真的反转任何东西,它只是返回一个可以用来反向遍历容器元素的对象。如果你只是想反向查看元素,这个方法通常比实际反转元素要快。
15
这要看你是想在原地反转列表(也就是直接修改这个列表)还是不想。其实没有其他太大的区别。
通常使用 reversed
会让代码看起来更简洁。