用python计算字符串中的字母
我有以下练习:编写函数countA(word),它接受一个单词作为参数,并返回该单词中的“a”数。例子 我的解决办法是:用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') 另一个例子是
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
@tkoomzaaskzis
是不正确的。它只是意外地返回了正确的结果(因为在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