【发布时间】:2015-11-12 22:00:00
【问题描述】:
这是我的问题:
self.gameField = [
['-', '-', '-', '-', '-', '-', '-']
['-', '-', '-', '-', '-', '-', '-']
['-', '-', '-', '-', '-', '-', '-']
['-', '-', '-', '-', '-', '-', '-']
['-', '-', '-', '-', '-', '-', '-']
['-', '-', '-', '-', '-', '-', '-']
]
如您所见,我使用列表创建了一个矩阵,我需要更改用户选择的列的单个元素,所以我尝试了以下代码:
for z in self.gameField:
if z[num] == "-":
z[num] = "X"
print "Done"
其中 'num' 是一个 0 到 6 的整数,表示子列表。我想选择一个列,并设置可用的最低 ' - '(如果有重力),例如,如果我选择 '0'
['-', '-', '-', '-', '-', '-', '-']
['-', '-', '-', '-', '-', '-', '-']
['-', '-', '-', '-', '-', '-', '-']
['-', '-', '-', '-', '-', '-', '-']
['-', '-', '-', '-', '-', '-', '-']
['X', '-', '-', '-', '-', '-', '-']
但实际上我的程序改变了所有列的值
['X', '-', '-', '-', '-', '-', '-']
['X', '-', '-', '-', '-', '-', '-']
['X', '-', '-', '-', '-', '-', '-']
['X', '-', '-', '-', '-', '-', '-']
['X', '-', '-', '-', '-', '-', '-']
['X', '-', '-', '-', '-', '-', '-']
我该如何解决?你有什么想法吗?
【问题讨论】:
-
使用以下内容创建您的二维列表:stackoverflow.com/questions/13447882/…。这应该可以解决您的引用问题。
-
你是如何初始化你的矩阵的?因为这可能是multiple list references 的经典示例
-
for z in self.gameField将遍历每个“行”并将“单元格”设置为X,如果它在num引用的列中为-。 -
@RedShift,子列表没有改变,所以它不是引用问题
-
@Marco,您正在更改每个子列表的所有第一个元素,因此显然它们看起来都一样,
self.gameField [0][0]将获得第一行的第一个元素,self.gameField [5][0]将获得第一个最后一行的元素