2017-10-11 141 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]]