2014-09-19 115 views
1
发现列表中的所有单词的字符数

我试图找到字符的单词列表总数,特别是这个名单:在Python

words = ["alpha","omega","up","down","over","under","purple","red","blue","green"] 

我试着这样做:

print "The size of the words in words[] is %d." % len(words) 

但只是告诉我有多少话是在列表中,这是10

任何帮助,将不胜感激!

对不起,我打算提到我正在做这个的类是for循环的主题,所以我想知道如果我必须实现一个forloop给我一个答案,这就是为什么for循环标签在那里。

+0

为什么标记为[loops]和[for-loop]?你还没有使用循环。 – geoffspear 2014-09-19 13:04:54

+0

对不起,我想说的是我正在做的这个类是关于循环的主题,所以我想知道是否必须实现一个forloop来给我一个答案。 – 2014-09-19 13:13:05

+0

@RyanRoss'for'循环是一种方法,你可以使用很多方法。通常,对于任何实现,您都试图平衡时间复杂性,空间(内存)复杂性和可读性等。 – CoryKramer 2014-09-19 13:16:30

回答

6

您可以在列表解析中使用len功能,这将只是sum使用生成器表达式

>>> sum(len(i) for i in words) 
43 

创建长度

>>> words = ["alpha","omega","up","down","over","under","purple","red","blue","green"] 
>>> [len(i) for i in words] 
[5, 5, 2, 4, 4, 5, 6, 3, 4, 5] 

然后列表如果你真的有你的心脏集在for环路上。

total = 0 
for word in words: 
    total += len(word) 

>>> print total 
43 
+3

只需跳过列表理解并使用gen expr:'sum(len(i)for i in words)'或者只是'sum(imap(len,words))' – acushner 2014-09-19 13:12:59

+1

@acushner表达式必须完全评估为无论如何传递给'sum' – jonrsharpe 2014-09-19 13:14:24

+0

这是不正确的。总和需要一个迭代。如果你做了列表理解,首先,整个列表被创建,然后迭代遍历整个列表。如果你做gen expr,那么每个元素都是即时生成的。 – acushner 2014-09-19 13:17:14