我对 python 比较陌生,我正在尝试针对 HackerRank 问题优化一些代码。我发现使用很奇怪range
(即生成列表?)比仅使用更快while
使用单个变量循环进行迭代。
我想知道缓存结果是否更快range
如果我稍后在代码中迭代相同的序列,则函数。例如:
这是更快吗:
ten = 10
zeroToTen = range(ten)
sum = 0
for x in zeroToTen:
sum += x
product = 1
for y in zeroToTen:
product *= y
或者我应该回忆一下range
每一次:
ten = 10
sum = 0
for x in range(10):
sum += x
product = 1
for y in range(10):
product *= y
在Python 3中,range
是一个发电机。这意味着它将产生序列的所有数字。这是简单的添加。
您可以将其缓存在list
: cache = list(range(10))
但这会分配一些内存并且需要对其进行迭代:效率不高!
顺便说一句:第一个示例不缓存结果,您只需复制生成器函数。您可能会节省几微秒的解析时间(因为该函数已经解析,并不值得)
所以,不,缓存结果是没有用的range
在 python 3 中(在 python 2 中,它会很有用,是的,因为它创建了一个实际的list
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)