【发布时间】:2020-11-19 11:10:38
【问题描述】:
为什么要创建一个先乘以行然后乘以列的矩阵;
class Blíster:
def __init__(self,row,columns):
self.nfil=row
self.ncol=columns
self.__matriu=[[True]*columns]*row
def __getitem__(self,i):
return self.__matriu[i[0]][i[1]]
def __setitem__(self,i,p):
self.__matriu[i[0]][i[1]]= p
不同于追加行,像这样:
class Blíster:
def __init__(self, rows, columns) :
self.nfil = rows
self.ncol = columns
self.cavitats = []
for i in range(rows) :
self.cavitats.append([True]*columns)
def __getitem__(self, pos) :
return self.cavitats[pos[0]][pos[1]]
def __setitem__(self, pos, p) :
self.cavitats[pos[0]][pos[1]] = p
当我尝试时
b = blíster.Blíster(3, 6)
b[1, 2] = False
b[2, 5] = False
b[2, 4] = False
b[1, 3] = False
c = 0
for i in range(3) :
for j in range(6) :
if b[i, j] :
c = c + 1
使用第一种创建矩阵的方法,我得到 c=6 所以它在矩阵中将 False 分配给超过 4 次,我不知道为什么。如果有人能给我解释一下,我将不胜感激:D
用第二种方法,我得到了 c=14,很好的答案。
【问题讨论】:
标签: python matrix append variable-assignment