计算列表中连续元素的出现次数(Python)
假设有一个列表
a=['g','d','r','x','s','g','d','r']
我想要统计一下“gdr”出现的次数,所以我会用一个函数
a.function('g','d','r')
来计算,最后返回 2
给我(因为“gdr”出现了2次)。
3 个回答
0
那这个怎么样:
>>> a=['g','d','r','x','s','g','d','r']
>>> print "".join(a).count("gdr")
2
1
你可以这样做:
def get_occur(list, seq):
return ''.join(list).count(''.join(seq))
>>> get_occur(['a', 's', 'a', 's'], ['a', 's'])
2
如果你传入的是字符串,可以这样做:
return your_string.count(pattern)
1
如果列表里只有字符串,你可以把它们合并成一个长字符串,然后用它的 count
方法来计算出现的次数:
>>> a=['g','d','r','x','s','g','d','r']
>>> ''.join(a).count('gdr')
2
如果你有字符串和数字混合的情况,比如说,你可以在合并之前用 map(str,a)
把所有的元素都转换成字符串,这样方法依然可以正常工作:
>>> a=[1,13,4,2,1,13,4]
>>> ''.join(map(str,a)).count('1134')
2
如果你想把这些功能放在一个函数里,你可以写成这样:
def count_pattern(lst, *pattern):
return ''.join(l).count(''.join(pattern))
然后你就可以像这样调用它: count_pattern(a, 'g', 'd', 'r')
或者 count_pattern(a, 'gdr')
,甚至可以用 count_pattern(a, 'gd', 'r')
。