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

时间:2014-04-24 12:35:46

标签: python list

给出一个清单

a=['g','d','r','x','s','g','d','r']

我想算一下gdr的出现,所以我会应用一些函数 a.function('g','d','r')并将2返回给我(因为gdr发生了2次)。

3 个答案:

答案 0 :(得分: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 :(得分: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')

答案 2 :(得分:0)

怎么样:

>>> a=['g','d','r','x','s','g','d','r']
>>> print "".join(a).count("gdr")
2