# range
# 2.x : list
# 3.x : object of type range
# iterable:
# gives values one after another
# at some points, says thats the end
# - keep all values ready; give one when asked for
# - make them when asked for
print (range(5))
print (list(range(5))) # 0 to 5; 5 not inclusive
print (list(range(5, 10))) # 5 6 7 8 9
print (list(range(5, 20, 3))) # 5 8 11 14 17
# range(final) # init = 0, step = 1
# range(init, final)
# range(init, final, step)