Python不同字符串列表,将所有单词加在一起



给定列表

sentence = [ "Hello" , "World", "Today is a good", "Day"]

输出应该是这些单词的平均值,因此为1.75

到目前为止我有这个

for k in len(line): // here i am trying to get position 0,1,2,3etc for k
        total += len(line[k].split())
return total / len(line)

错误是:'int' object is not iterable,我确实在这个网站上看到了同样的问题,但仍然不明白问题出在哪里。写这个循环的更好方法是什么?

要迭代位置:

for k in range(len(line)):

或者,直接迭代句子片段:

for fragment in line:
   total += len(fragment.split())

或者,您可以用生成器表达式替换循环:

total = sum(len(fragment.split()) for fragment in line)

您可以加入+拆分,然后除以列表的长度

>>> sentence = [ "Hello" , "World", "Today is a good", "Day"]
>>> float(len(" ".join(sentence).split()))/len(sentence)
1.75

在Python2中,您需要将其中一个设置为float,否则除法会截断。

给定您的句子:

sentence = ["Hello", "World", "Today is a good", "Day"]

你可以把它做成一行:

print(sum((len(word.split()) for word in sentence))/float(len(sentence)))

但要容易理解,请查看以下代码:

sentence = ["Hello", "World", "Today is a good", "Day"]
word_counts = [len(word.split()) for word in sentence] # make a list of word counts
# [1, 1, 4, 1]
print sum(word_counts)/float(len(sentence))
# 1.75

更换

for k in len(line):

带有

for k in range(len(line)):

最新更新