我有以下练习:编写以单词作为参数的函数countA(word),并返回该单词中的'a'数。示例
>>> countA("apple")
1
>>> countA("Apple")
0
>>> countA("Banana")
3
我的解决方案是:
def countA(word):
return len([1 for x in word if x is 'a'])
没关系。但我不确定它是否是解决此问题的最佳pythonic方法,因为我创建了1
值列表并检查其长度。任何人都可以建议更多pythonic?
答案 0 :(得分:5)
假设你不仅被允许使用word.count()
- 这是另一种方式 - 可能比对发生器求和更快,并且如果你想要你可以做多个字母......
def CountA(word):
return len(word) - len(word.translate(None, 'A'))
或者:
def CountA(word):
return len(word) - len(word.replace('A', ''))
答案 1 :(得分:3)
使用此
def countA(word):
return word.count('a')
作为另一个例子,myString.count('c')
将返回字符串
答案 2 :(得分:3)
在python中,字符串是序列(就像列表一样)。
然后你可以使用count:
>>> 'Apple'.count('p')
2
使用这个,你的练习的答案是:
def countA(word):
return word.count('a')
答案 3 :(得分:2)
我知道这已经得到了解答,但我不相信没有人提到使用计数器,因为它非常适合这个问题。它可能会有更多的开销,但如果你想找到多个字母,这可能是最好的方法。这是一个简单易读的lambda函数。
from collections import Counter
count = lambda word, letter: Counter(word)[letter]
count("test", "t")
>>> 2
答案 4 :(得分:1)
使用sum
:
>>> def countA(word):
return sum(1 for x in word if x == 'a')
>>> countA("apple")
1
>>> countA("Apple")
0
>>> countA("Banana")
3