追加到空列表vs首先进行初始化,然后将值赋予列表索引

问题描述 投票:0回答:2

我正在尝试用python编写代码。我事先知道清单的大小。

假设列表为l,大小为n。

所以我应该首先初始化长度为n的列表,然后使用for循环将l [i] = i表示i从0到n。

OR

首先初始化空列表然后使用forin循环将项目追加到列表中更好?

我知道这两种方法都会产生相同的结果。我只是想问一个是比另一个更快或更有效。

python list
2个回答
0
投票

追加速度更快,因为列表被设计为固有可变的。您可以使用

之类的代码初始化固定大小的列表
x = [None]*n

但是这本身需要时间。我编写了一个快速程序来比较速度,如下所示。

import time
def main1():
    x = [None]*10000
    for i in range(10000):
        x[i] = i
    print(x)

def main2():
    y = []
    for i in range(10000):
        y.append(i)
    print(y)


start_time = time.time()
main1()
print("1 --- %s seconds ---" % (time.time() - start_time))
#1 --- 0.03682112693786621 seconds ---
start_time = time.time()
main2()
print("2 --- %s seconds ---" % (time.time() - start_time))
#2 --- 0.01464700698852539 seconds ---

如您所见,第一种方法实际上在我的计算机上速度明显慢!


0
投票

如果您现在的列表大小,第一种方法是正确的。您可以使用numpy库将列表设置为任意大小。

import numpy as np
X = np.zeros(n, y) #size of your list
#use your for loop here
for i in range(10):
    a[i] = i+1
X.tolist()
© www.soinside.com 2019 - 2024. All rights reserved.