For every run of x or more consecutive zeros in a list in Python, I would like to del all zeros in the run except for x of them. If x = 0, then delete all zeros.
I was thinking of a Python function that took a list, L, and a number, x, as inputs.
For example, let L = [7, 0, 12, 0, 0, 2, 0, 0, 0, 27, 10, 0, 0, 0, 0, 8].
- If
x = 0, then returnL = [7, 12, 2, 27, 10, 8] - If
x = 1, then returnL = [7, 0, 12, 0, 2, 0, 27, 10, 0, 8] - If
x = 2, then returnL = [7, 0, 12, 0, 0, 2, 0, 0, 27, 10, 0, 0, 8] - If
x = 3, then returnL = [7, 0, 12, 0, 0, 2, 0, 0, 0, 27, 10, 0, 0, 0, 8] - If
x = 4, then returnL = [7, 0, 12, 0, 0, 2, 0, 0, 0, 27, 10, 0, 0, 0, 0, 8](Same as originalL) - If
x >= 5, then return original L as there are no runs of 5 or more consecutive zeros.
Any help would be sincerely appreciated.
This is easy to do as a generator. Wrap your call to it in a
listconstructor if you want a fresh list with the zero-runs removed.