用python计算字符串中的字母

时间:2013-06-26 14:25:41

标签: python string

我有以下练习:编写以单词作为参数的函数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?

5 个答案:

答案 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')将返回字符串

中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
相关问题