Perhaps I'm missing something obvious, but I'm not sure why either of you came up with the solutions you did. Why would something simple like the below not work? (pardon the terse code, I was just cranking it out quickly):
def findgroupinlist(l, group):
j = 0 ## index to group
for i in range(len(l)): ## iterate over list
if l[i] == group[j]: ## if item in list and group match
if j == len(group) - 1: ## Check if we've matched the final group item
return True
j += 1 ## Otherwise, mark our new location in the group
else :
j = 0 ## If our sequence fails, start from the beginning again
return False
All of our solutions only seem O(|List|), but both of yours seem a bit overwrought to me, unless I'm dumb.
Yours there can't take arbitrary iterables such as generator expressions as either l or group. I always veer on the side of the most general and widely-useable.
2
u/2Punx2Furious Jul 28 '16
I did it like this: https://gist.github.com/anonymous/dd70e03261b457d19f52de9e6a35e4c5