[英]Python for loop returns zero after first iteration
我正在尝试编写一个程序,将列表中的每个项目与文档文本进行比较。 然后,程序应返回一个新列表,其中每个项目附加一个值,该值与文档中的单词匹配的次数。 我有一个函数编写,实际上匹配,它自己工作正常。 执行计数的循环也适用于单个条目。 但是,当我尝试为列表的所有条目运行它时,它会返回第一个列表条目的正确数字,然后只返回其余的零。
以下是它的外观:
doc = open("C:/...")
list = ['string_1', 'string_2', 'string_3', ...]
answer = []
...
[some code]
...
for t in list:
counter = 0
for word in doc:
if func(word,t) == True:
counter += 1
answer.append([counter,t])
print answer
回答我的问题最接近的是这篇文章。 但是,我确实想重置每个列表项的计数器,并且我没有在计算完成的实际“for”语句中包含“counter = 0”。
我有一种感觉,它可能与“counter = 0”赋值的位置有关,但是如果我将它放在“for t in list:”循环之外,那么它只为每个列表条目返回相同的值。
将您的第一行更改为:
doc = open("C:/...").read().split()
这应该返回一个文件中所有单词的列表。
它失败的原因是因为当你for word in doc:
执行for word in doc:
它正在遍历文件。 所以它只能读一次。 如果将文件的内容保存到变量,则可以根据需要多次迭代它。
此循环正在读取文件的末尾
for word in doc:
...
您需要重新打开它或寻求回到起点。
对于快速破解(我猜你的程序是一个快速的黑客,因为你不打扰关闭文件),你可以使用
doc = list(open("C:/..."))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.