class Matrix:
rowStorer = {}
generalPurposeList = []
def __init__(self,row,column):
self.row = row
self.column = column #To store away for a later method that displays statistics about matrice
for i in range(row):
for j in range(column):
numb = int(input('Enter A{}{}: '.format(i+1,j+1))) #i+1 and j+1 so I do not end up with 0 as starting value
self.generalPurposeList.append(numb)
self.rowStorer.setdefault(i+1,self.generalPurposeList)
self.generalPurposeList.clear()
def __str__(self):
megaMatrix = ''
for i in self.rowStorer:
megaMatrix += str(self.rowStorer[i])+'\n'
return megaMatrix
testRide = Matrix(2,3)
print(testRide.__str__())
我是 Python 课程的初学者,正在尝试制作一个 Matrix 课程作为练习。用户在创建类实例时指定行数和列数。
假设行为 m,列为 n,则使用 for 循环中的 input() 获取任意行 m 的条目 n 次。然后将该数字添加到一个列表中,该列表旨在包含该特定行的元素。当前行号作为键添加到字典中,值为包含该特定行元素的列表
然后,我在将其作为键添加到字典后清除该列表,以清理它并为下一行的元素做好准备。但是,当我运行程序时,似乎先清除列表,然后将其添加到字典中?
我很困惑,我做错了什么?按照代码将其添加到字典后不应该清除吗?
问题是你正在使用self.generalPurposeList
so self.rowStorer
正在保存对该对象的引用而不是您想要的列表。稍后,您可以使用以下命令清除该对象self.generalPurposeList.clear()
,这就是为什么您得到空结果的原因。
改变线路
self.rowStorer.setdefault(i+1,self.generalPurposeList)
to
self.rowStorer.setdefault(i+1,self.generalPurposeList.copy())
这会添加一个新列表,其中包含generalPurposeList
列表,清除旧列表不会影响此列表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)