During your ++ loop you delete number 0 first so i = 0 and here's what the list will look like after:

Object number

Object Name

0

Object 2

1

Object 3

The object numbers has been updated but i still = 0. The next time it loops i will = 1 so it will delete "Object 3". Now that loop is finished i will = 2 which is greater than the amount of objects so the loop breaks and Object 2 is left not deleted.

If you did it counting down then it will always be deleting the last object in the list and it won't matter that the list has updated.