I know I'm not supposed to modify the list inside a loop, but just out of curiosity, I would like to know why the number of iterations is different between the following two examples.
Example 1:
x = [1, 2, 3, 4, 5]
for i, s in enumerate(x):
    del x[0]
    print(i, s, x)
Example 2:
x = [1,2,3,4,5]
for i, s in enumerate(x):
    x = [1]
    print(i, s, x)
Example 1 runs only 3 times because when i==3, len(x)==2. 
Example 2 runs 5 times even though len(x)==1.
So my question is, does enumerate generate a full list of (index, value) pairs at the beginning of the loop and iterate through it? Or are they generated on each iteration of the loop?
 
     
     
     
     
     
     
     
    