反转()与xrange()

时间:2015-08-11 13:34:16

标签: python list traversal xrange

我需要向后遍历一个列表。我读了关于xrange()和reverse()的内容。哪一个更贵?

2 个答案:

答案 0 :(得分:2)

xrange()生成一系列数字。然后,您可以根据需要将这些数字用作列表索引,或者您可以将它们用于您想要这些数字的任何位置。

for i in xrange( len(l)-1, -1, -1):
    item = l[i]
    print item

reversed()从具有长度且可以编入索引的内容中生成项目。

for item in reversed(l):
    print item

我会使用reversed(),因为它可以使您的代码更短,更简单,更清晰,更容易正确编写。

答案 1 :(得分:2)

您可以使用Python的timeit库来计算这样的时间。你不会说你有什么样的列表,所以我假设一个简单的字符串列表。首先,我创建一个列表100个项目,然后两个时间:

my_list = ["hello"] * 100

def v1():
    for x in my_list[::-1]:
        pass

def v2():
    for x in reversed(my_list):
        pass

print timeit.timeit(v1)
print timeit.timeit(v2)

这给出了以下结果:

2.78170533583
2.13084949985

正如您所看到的,在此示例中,reversed()更快一些。