spis = ['a','b','c','d','e','f','g','h','i','j'] # объявляем список
print('"spis" имеет тип: ', type(spis))
# with range
# В ЭТОМ ВАРИАНТЕ ЦИКЛА МЫ ДОЛЖНЫ ЧЕТКО ЗНАТЬ ДЛИНУ СПИСКА,
# ТО ЕСТЬ КОЛИЧЕСТВО ЭЛЕМЕНТОВ В НЕМ
print('\n\n\nwith range\n')
print(range(10)) # range(10) - это последовательность чисел от 0 до 10,
# НО не включая 10, то есть по факту от 0 до 9
print('range(10) имеет тип: ', type(range(10)))
for i in range(10): # здесь в качестве "i" перебираются ЧИСЛА от 0 до 9
# эти числа являются ИНДЕКСАМИ
# и они определяют количество повторов цикла
print('Здесь "i" имеет тип: ' + str(type(i)))
print('i = ', i)
print('spis[', i, '] = ', spis[i]) # по этим индексам тут из списка по очереди
# извлекается каждый элемент этого списка
# spis[0] - первый элемент, spis[9] - последний.
# without range
# В ЭТОМ ВАРИАНТЕ ЦИКЛА МЫ ВООБЩЕ НЕ ЗАМОРАЧИВАЕМСЯ ТЕМ, КАКАЯ У СПИСКА ДЛИНА
# И СКОЛЬКО В НЕМ ЭЛЕМЕНТОВ. ЦИКЛ АВТОМАТИЧЕСКИ ПРОЙДЕТСЯ ПО ВСЕМ ЭЛЕМЕНТАМ.
print('\n\n\nwithout range\n')
for i in spis: # здесь в качестве "i" перебираются непосредственно сами ЭЛЕМЕНТЫ списка
# и повторов цикла будет ровно столько, сколько элементов содержится в списке
#print(spis[i]) # Попробуй убери символ "#" в начале строки и ты получишь error:
# "TypeError: list indices must be integers or slices, not str"
print('Здесь "i" имеет тип: ' + str(type(i))) # каждое "i" имеет тип "строка"
print('i = ', i) # тут из списка по очереди извлекается каждый элемент этого списка
# не по индексам, а просто по очереди - от первого до последнего,
# пока цикл не дойдет до конца списка