2017-10-11 142 views
-1

我對Python很新穎,我嘗試了一些類似於之前在這裏嘗試的東西,並且得到了正確的輸出,但在這種情況下,我的代碼沒有按預期工作,而我我不知道爲什麼。我正在嘗試創建一個具有文檔ID(文件中的任意數字)的二維列表。看到這裏代碼:創建二維列表不能按預期工作

termDocuments = [] 
termDocument = [] 
for ids in termids: 
    ... 
    for documentIndices in range(
      int(iitermids.index(ids)), 
      int(iitermids.index(ids)+int(documentFrequencyForTerm)-1)): 
     termDocument.append(docids[documentIndices]) 
    termDocuments.append(termDocument) 
    print termDocuments[len(termDocuments)-1] 

我知道我的範圍是相當混亂,我可能有一些作風問題,但它抓住了正確的值,但不能正確追加它們。我想termDocuments包含類似

[['1', '2', '3'], ['4', '5', '6']] 

但它只是附加價值,以列表的末尾,出來作爲一維列表如下:

['1', '2', '3', '4', '5', '6'] 

我的假設下將一個列表追加到列表中創建了一個二維列表。

這是錯誤的嗎?

+0

題外話:'termDocuments [-1]'意味着同樣的事情'termDocuments [LEN(termDocuments)-1]'和更易讀(至少如果你瞭解負指數在Python中的工作方式)。 – martineau

+1

請提供易於遵循的代碼。這意味着排除表面上的所有應用程序細節,例如在此問題的上下文中無意義的名稱。只要創建一個最小工作(或不工作)的代碼片段,提供輸入,顯示輸出,並解釋你想要以不同的方式發生什麼,或者你困惑的地方 – Thanassis

+1

很難說,不知道'docids [documentIndices]中有什麼。 – martineau

回答

-1

(重新閱讀您的代碼後編輯)我認爲您的問題是,您正在設置termDocument = []以外的外部循環。如果將它移動到外部循環的頂部,它應該給出所需的結果。

+0

你說得對。我不知道你爲什麼陷入低谷。當我這樣做之前,我重置它在內部循環的末尾,它正常工作。謝謝 – joshua0823

+0

我原來的回答沒那麼有用,但我很高興它現在可以工作。請隨時將問題標記爲已回答。 – speedyturkey

0

你可以嘗試這樣的事:

list1 = []  
for i in range(10): # creating a list with nested lists 
    list1.append([]) 
    for j in range(10): 
     list1[i].append("1") # filling nested lists with ones 

這將輸出一個與它10所列出清單,洋溢着的。

0

,但它只是附加價值到列表的末尾,出來作爲一維列表

print termDocuments[len(termDocuments)-1] 

這是因爲你打印的每一個1-d列表termid在最後一行。而且據我所知,在termids中只能有一個termid開頭。

您對追加的直覺是正確的,雖然

>>> A = [] 

>>> A.append([1, 2, 3]) 
>>> A.append([7, 8, 9]) 

>>> print(A) 
[[1, 2, 3], [7, 8, 9]]