我试图在列表中找到一个单词等于设定长度的次数? 所以对于这个例子:'我的名字是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。
答案 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