On Python is the `i` variable defined inherently?
No, i is not predefined. If you use enumarate(), i (or whatever you may call it) is a count: see the docs.

squares=['red', 'yellow', 'green', 'purple', 'blue']

for i, square in enumerate(squares):
    print(i, square) 


Gives you:

0 red
1 yellow
2 green
3 purple
4 blue


You can also set a start value for the count (Python by default starts counting by 0):

for i, square in enumerate(squares,10):
    print(i, square) 


Gives you:

10 red
11 yellow
12 green
13 purple
14 blue


In case you just want to loop over a list, you can write:

for i in squares:
    print(i)


Which gives you:

red
yellow
green
purple
blue