'Find integer consecutive run starting indices in a list

Example:

nums = [1,2,3,5,10,9,8,9,10,11,7,8,7]

I am trying to find the first index of numbers in consecutive runs of -1 or 1 direction where the runs are >= 3.

So the desired output from the above nums would be:

[0,4,6,7]

I have tried

grplist = [list(group) for group in more_itertools.consecutive_groups(A)]
output: [[1, 2, 3], [5], [10], [9], [8, 9, 10, 11], [7, 8], [7]]

It returns nested lists but does not but that only seems to go in +1 direction. And it does not return the starting index.

listindx = [list(j) for i, j in groupby(enumerate(A), key=itemgetter(1))]
output: [[(0, 1)], [(1, 2)], [(2, 3)], [(3, 5)], [(4, 10)], [(5, 9)], [(6, 8)], [(7, 9)], [(8, 10)], [(9, 11)], [(10, 7)], [(11, 8)], [(12, 7)]]

This does not check for consecutive runs but it does return indices.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source