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() 绝对是更好的选择。