我正在尝试创建多维列表。
输入将是:L1 = [2,3,4]
L2 = [5,6,7]
输出将是x**y,其中x来自L1,x来自L2
^{pr2}$
我的代码如下:L1 = [2,3,4]
L2 = [5,6,7]
L3 = [[None] * len(L1)] * len(L2)
c=0
for x in L1:
d=0
for y in L2:
L3[c][d] = x ** y
d = d+1
c = c+1
print L3
这里的输出是:[[1024,4096,16384],[1024,4096,16384],[1024,4096,16384]]
调试时我知道:
在分配给“L3[0][0]”时,其赋值给L3[0][0],L3[1][0],L3[2][0]。它应该分配九次。在每次作业中,分配给3个位置。我不明白它是怎么工作的。在
我试着打印id(L3[0])
id(L3[1])
id(L3[2])
所有的都在打印相同的内存位置地址。在
是不是因为同一个内存地址,这个值一次被传递到3个地方(x**y的值同时去了L3[0][0],L3[1][0],L3[2][0]?在
有人能帮我摆脱困境吗。在
提前谢谢你,
SRP公司