python - 我应该在 Python 的循环之外分配一个范围吗?

标签 python performance

我意识到 Python 不是性能最高的语言,但由于这看起来很容易,我想知道如果我有嵌套循环,是否值得将范围赋值移到 for 循环之外。例如:

for i in range(1000):
    for j in range(1000):
        foo()

对比

r = range(1000)
for i in range(1000):
    for j in r:
        foo()

第二个会运行得更快,还是 Python 解释器会优化第一个示例中的重复函数调用?另外,如果我使用 xrange,答案会改变吗? (或 Python 3 范围)。谢谢!

最佳答案

让我们看看:

@timeit
def a():
    x = 0
    for i in range(10000):
        for j in range(10000):
            x+=1
    return x

@timeit
def b():
    x = 0
    r = range(10000)
    for i in range(10000):
        for j in r:
            x+=1
    return x

a()
b()

'a' ((), {}) 3.30 sec
'b' ((), {}) 2.64 sec

是的,第二个看起来更快。

关于python - 我应该在 Python 的循环之外分配一个范围吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31257692/

相关文章:

android - SQLite 对比纯文本(安卓/新手)

python - 如何使用 response.css() 和 response.follow() 在 Scrapy 中对最后一页进行分页?

python - Django 1.5.4 Python 计算循环

python - 链接 : fatal error LNK1104: cannot open file 'python37_d.lib'

python - 对具有相等值的列表求和和聚合

java - JayDeBeApi 连接崩溃

c - 为什么 SSE4.2 cmpstr 比普通代码慢?

php - 使用 PHP 框架会影响性能吗?

c++ - 从 C++ 中的文本文件中读取数百万行分隔的整数的最有效方法是什么

java - EJB 与 Web 服务?性能观点