在Python中预分配或不预分配列表

2024-04-26 14:21:15 发布

您现在位置:Python中文网/ 问答频道 /正文

什么时候应该和不应该预先分配python中的列表列表? 例如,我有一个函数,它获取两个列表并从中创建一个列表列表。 很像,但不完全是,矩阵乘法。如果我预先分配结果

X = Len(M)
Y = Len(F)
B = [[None for y in range(Y)] for x in range(X)]
for x in range(X):
    for y in range(Y):
        B[x][y] = foo(M[x], F[y])
return B

或者在我走的时候动态地创建它?

B = []
for m in M:
    B.append([])
    for f in F:
        B[-1].append(foo(m, f))
return B

预分配似乎是不必要的,而且可能速度较慢,但动态上看起来很模糊。尤其是,B[-1].append(...)似乎难以辨认。


Tags: 函数innone列表forlenreturnfoo