Count the number of occurences of a pattern in a list in Python

  • A+
Category:Languages

Given a pattern [1,1,0,1,1], and a binary list of length 100, [0,1,1,0,0,...,0,1]. I want to count the number of occurences of this pattern in this list. Is there a simple way to do this without the need to track the each item at every index with a variable?

Note something like this, [...,1, 1, 0, 1, 1, 1, 1, 0, 1, 1,...,0] can occur but this should be counted as 2 occurrences.


Convert your list to string using join. Then do:

text.count(pattern) 

If you need to count overlapping matches then you will have to use regex matching or define your own function.

Edit Here is the full code:

def overlapping_occurences(string, sub):     count = start = 0     while True:         start = string.find(sub, start) + 1         if start > 0:             count+=1         else:             return count  given_list = [1, 1, 0, 1, 1, 1, 1, 0, 1, 1] pattern = [1,1,0,1,1]  text = ''.join(str(x) for x in given_list) print(text) pattern = ''.join(str(x) for x in pattern) print(pattern) print(text.count(pattern)) #for no overlapping print(overlapping_occurences(text, pattern)) 

Comment

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: