如何在python中找到一个单词为len n的次数?

时间:2013-04-21 03:10:01

标签: python string

我试图在列表中找到一个单词等于设定长度的次数? 所以对于这个例子:'我的名字是ryan'和2这个函数会给我一个单词长度为2的次数。我有:

def LEN(a,b):
'str,int==>int'
'returns the number of words that have a len of b'
c=a.split()
res=0
for i in c:
    if len(i)==b:
        res=res+1
        return(res)

但是所有这一切都给了我一个1的res,并且没有超过第一个带有len的c。

3 个答案:

答案 0 :(得分:4)

你在for循环中return res,一旦命中该语句,程序就会立即停止执行。你可以将它移到循环之外,或者使用这种更为pythonic的方法:

>>> text = 'my name is ryan'
>>> sum(1 for i in text.split() if len(i) == 2)
2

或更短但不太清楚recommended):

>>> sum(len(i) == 2 for i in text.split())
2

第二个功能基于True == 1

这一事实

答案 1 :(得分:3)

你的功能很好,你只是提前return

def LEN(a,b):
        'str,int==>int'
        'returns the number of words that have a len of b'
        c= a.split()
        res = 0
        for i in c:
            if len(i)==b:
                res= res + 1
        return(res) # return at the end

这相当于:

>>> text = 'my name is ryan'
>>> sum(len(w) == 2 for w in text.split())
2

答案 2 :(得分:2)

怎么样:

>>> s = 'my name is ryan'
>>> map(len, s.split()).count(2)
2