首页 > 解决方案 > li.append(i) vs tu = tu + (i,)

问题描述

我的问题是为什么将数据存储在列表中并附加每个新数据点比使用元组并在每次迭代时重新定义元组要快得多。我的代码:

def li(N):
    li = []
    for i in range(N):
        li.append(i)
    return 

def tu(N):
    tu = ()
    for i in range(N):
        tu = tu + (i,)
    return

如果我以 N = 100000 运行我的函数,则 li 需要 0.02364325523376465 和 tu 24.86034870147705。

速度如此巨大的差异是否有原因?

标签: python

解决方案


列表是可变的。您可以将更多项目添加到现有列表中。元组是不可变的。对于元组,您每次都必须创建一个全新的元组。这更慢,尤其是当元组很大时。

没有理由使用元组版本。如果您想逐渐创建一个大元组,最好使用列表并在最后转换为元组。


推荐阅读