我何时应该以及何时不应该在python中预分配一个列表的列表? 例如,我有一个函数,它接受2个列表并将其创建为列表的列表。 就像矩阵乘法一样。我应该预先分配结果吗?
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(...)
看起来很晦涩。