计算列表中连续元素的出现次数(Python)

-2 投票
3 回答
2872 浏览
提问于 2025-04-18 04:05

假设有一个列表

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')

撰写回答