[英]counting occurance of an alphabet in a list
我正在用python编写代码以使用列表理解来计算字母在给定序列中出现的次数
例如:
countoccur("s", "ssssdfrtsgjdt" )
因为s出现了五次,所以应该给出5作为输出。 我编写了这段代码,并获得以下输出:
def countoccur(x,s):
y=[e for e in s if e==x]
return y
输出:
['s', 's', 's', 's', 's']
有人可以帮我解决这个问题吗?
您可以像这样简单地使用内置的str.count
函数
def countoccur(char, input_string):
return input_string.count(char)
print countoccur("s", "ssssdfrtsgjdt" )
我建议像这样使用生成器表达式和sum
函数
return sum(1 for e in input_string if e == char)
可以将其缩短为以下内容,如@volcano在评论中建议的那样
return sum(e == char for e in input_string)
之所以有效,是因为在Python中, True == 1
和False == 0
:)
如果您只想使用理解力,
return sum([e == char for e in input_string])
Python确实随附了所有电池,请尝试使用集合。
In [1]: from collections import Counter
In [2]: s="ssssdfrtsgjdt"
In [3]: Counter(s)
Out[3]: Counter({'s': 5, 'd': 2, 't': 2, 'g': 1, 'f': 1, 'j': 1, 'r': 1})
In [4]: Counter(s)['s']
Out[4]: 5
如Fredrik Pihl所述,手动编写Counter:
In [60]: from collections import defaultdict
...: cnt=defaultdict(int)
...: s="ssssdfrtsgjdt"
...: for v in s:
...: cnt[v]+=1
...:
In [61]: print cnt['s'], cnt['d']
5 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.