所以我遇到了一个非常奇怪的场景,我简化了代码,但遇到了同样的问题。
def write_to_bf_of_lpr(bf_source, bf_destination, lpr_index, start, length):
for x in range(length):
bf_destination[lpr_index][start + x] = bf_source[start + x]
source = ['a','b','c','d','e']
destination = [[0]*5]*3
dets2=[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
for x in range(1):
write_to_bf_of_lpr(bf_source=source,bf_destination=dets2,lpr_index=x,start=1,length=2)
for x in range(1):
write_to_bf_of_lpr(bf_source=source,bf_destination=destination,lpr_index=x,start=1,length=2)
这段代码很容易理解,我希望做的只是每次(或迭代)更改特定的数组。
现在:当我在支持版本中编写时:destination = [[0]*5]*3 它正在更改 SINGLE 迭代中的所有数组。
当我用 LONG 版本(这不是可取的)编写时,我得到了正确的版本。
你可以看到这dest2是正确的,而destination错误的答案。
有趣的是,我只是简单地从简短版本中复制了值……结果却有所不同……
是 Pycharm 错误、python 还是我遗漏了什么?请看输出截图
拉丁的传说
相关分类