在 for 循环中更改时未重新分配变量
Variable not reassigned when changed in for loop
此代码的目标是统计给定列表中出现次数最多的单词。我计划通过遍历字典来做到这一点。如果一个词出现的次数多于存储在变量 rep_num 中的值,它会被重新分配。当前,变量 rep_num 保持为 0,并且不会重新分配给单词在列表中出现的次数。我相信这与尝试在 for 循环中重新分配它有关,但我不确定如何解决这个问题。
def rep_words(novel_list):
rep_num=0
for i in range(len(novel_list)):
if novel_list.count(i)>rep_num:
rep_num=novel_list.count(i)
return rep_num
novel_list =['this','is','the','story','in','which','the','hero','was','guilty']
在给定的代码中,应该返回 2,但返回了 0。
你的函数有错误(你计算的是索引,而不是值),这样写:
def rep_words(novel_list):
rep_num=0
for i in novel_list:
if novel_list.count(i)>rep_num: #you want to count the value, not the index
rep_num=novel_list.count(i)
return rep_num
或者你也可以试试这个:
def rep_words(novel_list):
rep_num=0
for i in range(len(novel_list)):
if novel_list.count(novel_list[i])>rep_num:
rep_num=novel_list.count(novel_list[i])
return rep_num
在您的 for 循环中,您迭代的是数字而不是列表元素本身,
def rep_words(novel_list):
rep_num=0
for i in novel_list:
if novel_list.count(i)>rep_num:
rep_num=novel_list.count(i)
return rep_num
您正在遍历一个数值范围,并且 count
整数 i
,none 的值完全存在于列表中。试试这个,returns 最大频率,以及可选的出现次数的单词列表。
novel_list =['this','is','the','story','in','which','the','hero','was','guilty']
def rep_words(novel_list, include_words=False):
counts = {word:novel_list.count(word) for word in set(novel_list)}
rep = max(counts.values())
word = [k for k,v in counts.items() if v == rep]
return (rep, word) if include_words else rep
>>> rep_words(novel_list)
2
>>> rep_words(novel_list, True)
(2, ['the'])
>>> rep_words('this list of words has many words in this list of words and in this list of words is this'.split(' '), True)
(4, ['words', 'this'])
此代码的目标是统计给定列表中出现次数最多的单词。我计划通过遍历字典来做到这一点。如果一个词出现的次数多于存储在变量 rep_num 中的值,它会被重新分配。当前,变量 rep_num 保持为 0,并且不会重新分配给单词在列表中出现的次数。我相信这与尝试在 for 循环中重新分配它有关,但我不确定如何解决这个问题。
def rep_words(novel_list):
rep_num=0
for i in range(len(novel_list)):
if novel_list.count(i)>rep_num:
rep_num=novel_list.count(i)
return rep_num
novel_list =['this','is','the','story','in','which','the','hero','was','guilty']
在给定的代码中,应该返回 2,但返回了 0。
你的函数有错误(你计算的是索引,而不是值),这样写:
def rep_words(novel_list):
rep_num=0
for i in novel_list:
if novel_list.count(i)>rep_num: #you want to count the value, not the index
rep_num=novel_list.count(i)
return rep_num
或者你也可以试试这个:
def rep_words(novel_list):
rep_num=0
for i in range(len(novel_list)):
if novel_list.count(novel_list[i])>rep_num:
rep_num=novel_list.count(novel_list[i])
return rep_num
在您的 for 循环中,您迭代的是数字而不是列表元素本身,
def rep_words(novel_list):
rep_num=0
for i in novel_list:
if novel_list.count(i)>rep_num:
rep_num=novel_list.count(i)
return rep_num
您正在遍历一个数值范围,并且 count
整数 i
,none 的值完全存在于列表中。试试这个,returns 最大频率,以及可选的出现次数的单词列表。
novel_list =['this','is','the','story','in','which','the','hero','was','guilty']
def rep_words(novel_list, include_words=False):
counts = {word:novel_list.count(word) for word in set(novel_list)}
rep = max(counts.values())
word = [k for k,v in counts.items() if v == rep]
return (rep, word) if include_words else rep
>>> rep_words(novel_list)
2
>>> rep_words(novel_list, True)
(2, ['the'])
>>> rep_words('this list of words has many words in this list of words and in this list of words is this'.split(' '), True)
(4, ['words', 'this'])