繁体   English   中英

Python for循环在第一次迭代后返回零

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM