有人可以解释一下这个词频计数吗?
Can someone explain this word frequency count, please?
我正在上 MIT DS&A 算法课程,关于文档距离问题,我们必须将文件解析为单词列表,然后计算文件中每个单词的频率。我很难理解以下功能:
def count_frequency(word_list):
"""
Return a list giving pairs of form: (word,frequency)
"""
L = []
for new_word in word_list:
for entry in L:
if new_word == entry[0]:
entry[1] = entry[1] + 1
break
else:
L.append([new_word,1])
return L
- 为什么我们将 new_word 与条目 [0] 进行比较?
一个。如果 L 为空怎么办?我们将 new_word 与什么进行比较?
b.为什么我们专门将 new_word 与 entry[0] 进行比较?为什么我们不做类似的事情
if new_word in L
C。为什么我们需要使用break
?
- 为什么
else
块 1 选项卡位于较早的 if
块的右侧?当我尝试缩进 else
块时,会出现缩进错误。
感谢您的帮助!
由于 L.append([new_word,1])
,列表 L
包含两项条目。如果 L
为空,则不会输入 for
,因此 entry[0]
.
没有问题
entry[0]
是一个词,entry[1]
是一个计数。你不能说 if new_word in L
因为它不仅仅是一个字符串列表。
break
在找到单词后停止 for
。
for/else
是 Python 中的一个东西。如果 for
没有中断地完成(在本例中为 break
),则 else
运行。如果 new_word
不在 L
中,for
不会中断,新单词和计数 1 将添加到 L
。
仅供参考,内置 collections.Counter()
会 return 类似的结果。
我正在上 MIT DS&A 算法课程,关于文档距离问题,我们必须将文件解析为单词列表,然后计算文件中每个单词的频率。我很难理解以下功能:
def count_frequency(word_list):
"""
Return a list giving pairs of form: (word,frequency)
"""
L = []
for new_word in word_list:
for entry in L:
if new_word == entry[0]:
entry[1] = entry[1] + 1
break
else:
L.append([new_word,1])
return L
- 为什么我们将 new_word 与条目 [0] 进行比较?
一个。如果 L 为空怎么办?我们将 new_word 与什么进行比较?
b.为什么我们专门将 new_word 与 entry[0] 进行比较?为什么我们不做类似的事情
if new_word in L
C。为什么我们需要使用break
? - 为什么
else
块 1 选项卡位于较早的if
块的右侧?当我尝试缩进else
块时,会出现缩进错误。
感谢您的帮助!
由于 L.append([new_word,1])
,列表 L
包含两项条目。如果 L
为空,则不会输入 for
,因此 entry[0]
.
entry[0]
是一个词,entry[1]
是一个计数。你不能说 if new_word in L
因为它不仅仅是一个字符串列表。
break
在找到单词后停止 for
。
for/else
是 Python 中的一个东西。如果 for
没有中断地完成(在本例中为 break
),则 else
运行。如果 new_word
不在 L
中,for
不会中断,新单词和计数 1 将添加到 L
。
仅供参考,内置 collections.Counter()
会 return 类似的结果。