reverse方法和reversed内置函数哪个“更好”?

25 投票
8 回答
31805 浏览
提问于 2025-04-16 22:11

通常来说,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 会让代码看起来更简洁。

撰写回答