首页 > 解决方案 > Python:在另一个数组的位置设置数组的值

问题描述

在下面的代码中,[4][7] 处的 zomPos 是唯一应该在数组 zomPos 中的非零事物。但是,并非只有 zomPos[4][7] 为 28,而是第 7 个索引处的所有行都有 28。

turn = 0
zomPos = [[0]*8]*5
zombies = [[0,4,28],[1,1,6],[2,0,10],[2,4,15],[3,2,16],[3,3,13]]
for zombie in zombies:
    if zombie[0] == turn:
        zomPos[zombie[1]][7] = zombie[2]
print(zomPos)

tl;博士:

代码应打印:

[[0, 0, 0, 0, 0, 0, 0, 0], 
 [0, 0, 0, 0, 0, 0, 0, 0], 
 [0, 0, 0, 0, 0, 0, 0, 0], 
 [0, 0, 0, 0, 0, 0, 0, 0], 
 [0, 0, 0, 0, 0, 0, 0, 28]]

但打印:

[[0, 0, 0, 0, 0, 0, 0, 28], 
 [0, 0, 0, 0, 0, 0, 0, 28], 
 [0, 0, 0, 0, 0, 0, 0, 28], 
 [0, 0, 0, 0, 0, 0, 0, 28], 
 [0, 0, 0, 0, 0, 0, 0, 28]]

标签: python-3.xmultidimensional-array

解决方案


只是想通了...zomPos = [[0]*8]*5创建5个相同的数组... zomPos = [ [0] * 8 for t in range(5) ]是我所需要的。


推荐阅读