📜  Python – reversed() VS [::-1] ,哪个更快?

📅  最后修改于: 2022-05-13 01:55:08.405000             🧑  作者: Mango

Python – reversed() VS [::-1] ,哪个更快?

可以使用许多Python方法(例如使用切片)来反转Python列表 方法或使用reversed()函数。本文讨论了这两种方法是如何工作的,其中哪一种似乎更快,以及为什么。

代码:使用Slicing反转列表。

Python3
# Python code to reverse
# a list using slicing
  
ls = [110, 220, 330, 
      440, 550]
print('Original list :', ls)
  
# list reverse
ls = ls[::-1]
  
print('Reversed list elements :')
for element in ls:
  print(element)


Python3
# Python code to reverse 
# a list using reversed()
  
ls = [110, 220, 330, 440, 550]
print('Original list :', ls)
  
# list reverse
ls = reversed(ls)
print('Iterator object :', ls)
  
print('Reversed list elements :')
for element in ls:
  print(element)


输出:

Original list : [110, 220, 330, 440, 550]
Reversed list elements :
550
440
330
220
110

解释 :切片中的格式 [a : b : c] 表示从 a 包含到 b 不包含,以 c 为增量计数。在上面的代码中,a 和 b 为空白,c 为-1。因此它迭代整个列表,从最后一个元素计数到第一个元素,从而产生一个反向列表。

代码:使用reversed()内置函数反转列表。

Python3

# Python code to reverse 
# a list using reversed()
  
ls = [110, 220, 330, 440, 550]
print('Original list :', ls)
  
# list reverse
ls = reversed(ls)
print('Iterator object :', ls)
  
print('Reversed list elements :')
for element in ls:
  print(element)

输出:

Original list : [110, 220, 330, 440, 550]
Iterator object : 
Reversed list elements :
550
440
330
220
110

解释 : Python中的内置 reversed()函数返回一个迭代器对象,而不是整个列表。

结论 :

对于比较大的列表,在时间限制下,似乎 reversed()函数比切片方法执行得更快。这是因为 reversed() 只返回一个迭代器,它以相反的顺序迭代原始列表,而不复制任何内容,而切片创建一个全新的列表,复制原始列表中的每个元素。对于10 6的列表 值, reversed() 执行比切片方法好近 20,000。如果需要存储数据的反向副本,则可以使用切片,但如果只想以反向方式迭代列表,则 reversed() 绝对是更好的选择。