用python计算字符串中的字母

用python计算字符串中的字母,python,string,Python,String,我有以下练习:编写函数countA(word),它接受一个单词作为参数,并返回该单词中的“a”数。例子 我的解决办法是: def countA(word): return len([1 for x in word if x is 'a']) 没关系。但我不确定这是否是解决这个问题的最佳Python方法,因为我创建了一个1值列表并检查其长度。有人能提出更具蟒蛇风格的建议吗?使用: 用这个 def countA(word): return word.count('a') 另一个例子是

我有以下练习:编写函数countA(word),它接受一个单词作为参数,并返回该单词中的“a”数。例子

我的解决办法是:

def countA(word):
  return len([1 for x in word if x is 'a'])
没关系。但我不确定这是否是解决这个问题的最佳Python方法,因为我创建了一个
1
值列表并检查其长度。有人能提出更具蟒蛇风格的建议吗?

使用:

用这个

def countA(word):
    return word.count('a')

另一个例子是,
myString.count('c')
将返回字符串中出现c的次数。在python中,字符串是序列(就像列表一样)

然后你可以使用:

使用此选项,您练习的答案将是:

def countA(word):
    return word.count('a')

假设您不仅被允许使用
word.count()
-这里还有另一种方法-可能比对生成器求和更快,并允许您在需要时执行多个字母

def CountA(word):
    return len(word) - len(word.translate(None, 'A'))
或:


我知道这个问题已经得到了回答,但我不敢相信没有人提到使用计数器来解决这个问题,因为它非常适合这个问题。它可能会有更多的开销,但是如果你想找到多个字母,这可能是最好的方法。这里是一个简单易读的lambda函数

from collections import Counter

count = lambda word, letter: Counter(word)[letter]

count("test", "t")
>>> 2

word.count('a')
?列表理解是python中常用的模式。这没什么问题。@是的,这比我写的好多了。我接受你的答案。这更像是一个C练习:-P@Ant嗯,是的,很奇怪。我在pyschools.com上找到的。还有一些类似的练习,但这也是提醒所有最重要的python方法的一种方式;)
sum
length
返回相同的值,只要在列表中返回
1
。这与他所做的基本相同did@tkoomzaaskz您可以使用
[1 for x in word,如果x是'a']
构造冗余列表,然后计算其长度<另一方面,code>Sum只是通过迭代器遍历原始单词。不要使用
is'a'
使用
==a
@tkoomzaaskz
is
是不正确的。它只是意外地返回了正确的结果(因为在Python中,较小的相等字符串指向相同的对象,但对于较长的相等字符串,对象将不同,因此
is
将返回False)。是的,字符串和列表都是可编辑的(所有序列也是如此),但可编辑与
count
或此答案的其余部分无关。@Jon Eric因此编辑了+1,但请注意
Counter(word).get(letter,0)
可以替换为
Counter(word)[letter]
as
计数器
为缺失返回0items@1_CR哦哈,完全忘了。谢谢你的提示。
def countA(word):
    return word.count('a')
def CountA(word):
    return len(word) - len(word.translate(None, 'A'))
def CountA(word):
    return len(word) - len(word.replace('A', ''))
from collections import Counter

count = lambda word, letter: Counter(word)[letter]

count("test", "t")
>>> 2