Incrementing specified list values, with "catch-up"
li is the name of your list of counters. The fact they are counters matters more than the fact it's a list, so, I'd call it counters.
I like the clever way you updated all elements in the counters list by creating a new one, but it may be slower than looping through the list and changing all elements in place. It'll also use twice as much memory (before the old one is GC'ed).
Your previous version didn't update max_val. This was fixed since this was originally posted.