Maybe instead of reassigning you can take the length, iterate on it's range() and popleft events? Sort of like this: https://github.com/saghul/rose/blob/master/rose/uv_events.py#L476