-3

我需要向后遍历一个列表。我阅读了有关 xrange() 和 reversed() 的信息。哪个更贵?

4

2 回答 2

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()它,因为它使您的代码更短、更简单、更清晰,并且更容易正确编写。

于 2015-08-11T13:39:26.220 回答
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()中速度要快一些。

于 2015-08-11T13:52:16.713 回答