0
我的代碼的相關部分在這裏 *編輯:第一次沒有包含外部循環。python列表的問題,元素被設置爲值我不想要
for i in range(numAttributes):
for w in range(numFeatures):
if X[i][w]!=0:
print ("Setting nFeat[",y[i],"][",w,"]")
self._Nfeat[y[i]][w]=1
print self._Nfeat[3][numFeatures-1]
if self._Nfeat[3][numFeatures-1]!=0:
print("y[i] is: ", y[i]," and w is: ", w)
sys.exit()
基本上self._Nfeat[3][numFeatures-1]
被設置爲1時,它不應該是。聲明中的print
聲明和最終的if
聲明全部用於調試。
最後的4件事輸出是:
0
setting nFeat[1][265676]
1
y[i] is 1 and w is 26576
我也放在其他地方其他如果self._Nfeat[3][numFeatures-1]!=0
檢查並確定它肯定是在當前位置前右發生。
這讓我非常困惑,因爲self._Nfeat[3][numFeatures-1]
似乎在它不應該改變時。
列表self._Nfeat在INIT與初始化:
self._Nfeat=[]
在方法它,然後用
self._Nfeat=[[0]*numFeatures]*numClasses
重新初始化的開始沒有別的地方的代碼它完全處理這個列表。
我是新來的Python並希望任何幫助非常
您需要更具體一點,因爲您的問題並不清楚。顯然'y [i]'是'1',但你檢查'nFeat [3]'而不是'nFeat [1]'。這是什麼原因? – Selcuk
我知道nFeat [3] [265676]不應該設置爲1。但是在代碼中這一點正在發生。當nFeat [1]被引用時,這部分的混亂來自於它被設置爲1。 – user3692508
您很可能會克隆相同的列表以生成您的嵌套列表。在這種情況下,所有列表都將指向相同的內存位置。請張貼您如何首先實例化'self._Nfeat'。 – Selcuk