我的一个循环不工作,有人可以给我一个原因吗?

One of my loops not working, can somebody give me a reason why?

我正在尝试在 python 中创建一个单词计数器来打印最长的单词,然后按频率对超过 5 个字母的所有单词进行排序。最长的单词有效,计数器也有效,我就是不知道如何让它只检查 5 个以上的字母。如果我 运行 它,它可以工作,但是 5 个字母以下的单词仍然存在。

这是我的代码:

print(max(declarationWords,key=len))

for word in declarationWords:
    if len(word) >= 5:
        declarationWords.remove(word) 

print(Counter(declarationWords).most_common())

您可以创建新列表,其中将包含符合您的条件(过滤器)的单词并使用它:

>>> s = ["abcdf", "asdfasdf", "asdfasdfasdf", "abc"]
>>> new_s = [x for x in s if len(x) >= 5]
>>> new_s
['abcdf', 'asdfasdf', 'asdfasdfasdf']
>>>

或其他一些方法

>>> new_s = filter(lambda x: len(x) >= 5, s)
>>> Counter(new_s)
Counter({'abcdf': 1, 'asdfasdf': 1, 'asdfasdfasdf': 1})

我看到您会发现这些更改对您的代码有帮助 :D

Longest_words=[]
print(max(declarationWords,key=len))

for word in declarationWords:
    if len(word) >= 5:
        Longest_words.append(word) 

print(Counter(Longest_words).most_common())