创建二维列表不能按预期工作
我对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']
我的假设下将一个列表追加到列表中创建了一个二维列表。
这是错误的吗?
(重新阅读您的代码后编辑)我认为您的问题是,您正在设置termDocument = []
以外的外部循环。如果将它移动到外部循环的顶部,它应该给出所需的结果。
你说得对。我不知道你为什么陷入低谷。当我这样做之前,我重置它在内部循环的末尾,它正常工作。谢谢 – joshua0823
我原来的回答没那么有用,但我很高兴它现在可以工作。请随时将问题标记为已回答。 – speedyturkey
你可以尝试这样的事:
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所列出清单,洋溢着的。
,但它只是附加价值到列表的末尾,出来作为一维列表
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]]
题外话:'termDocuments [-1]'意味着同样的事情'termDocuments [LEN(termDocuments)-1]'和更易读(至少如果你了解负指数在Python中的工作方式)。 – martineau
请提供易于遵循的代码。这意味着排除表面上的所有应用程序细节,例如在此问题的上下文中无意义的名称。只要创建一个最小工作(或不工作)的代码片段,提供输入,显示输出,并解释你想要以不同的方式发生什么,或者你困惑的地方 – Thanassis
很难说,不知道'docids [documentIndices]中有什么。 – martineau