В языке Python для перебора элементов любого указанного списка используется оператор for in. После in указывается имя списка. Инструкция должна заканчиваться символом двоеточия, после него идут инструкции, которые выполняются на каждой итерации цикла.

С помощью инструкции for in можно обходить в цикле элементы списка, кортежа, множества, а также ключи словаря. Поскольку строка — это не что иное, как список символов, каждый символ строки можно обходить в цикле, используя инструкцию for in.

С помощью цикла for in вы можете обходить элементы любого списка или символы строки в том порядке, в котором они появляются, но нельзя указать явно количество итераций цикла, условие остановки, либо размер шага итераций. Однако вы можете воспользоваться функцией языка range(), чтобы сгенерировать последовательность чисел, используемых для итераций. Эта функция генерирует последовательность, начинающуюся с нуля и кончающуюся числом в скобках, не включая его.

Например, range(5) генерирует последовательность 0,1,2,3,4.

Вы можете указать в качестве параметров функции range() два числа, разделенных запятой, — начальную и конечную величину. Например, range(1,5) генерирует последовательность 1,2,3,4. Также можно использовать еще один вариант функции, которая принимает три параметра, разделенных запятой — начальная величина, конечная величина и шаг.

Например, range(1,14,4) генерирует последовательность 1,5,9,13.

Существует полезная функция enumerate(), с помощью которой, указав в качестве параметра имя списка, вы можете вывести все индексы и связанные с ними значения.

Допускается делать обход нескольких списков одновременно. Для этого вам нужно использовать специальную функцию zip(), указав в качестве параметров через запятую имена списков, и на выходе вы получите попарно значения элемента с одним и тем же индексом через запятую. 

При обходе элементов словаря вы можете вывести пары ключ: значение, используя метод словаря items() и указав после ключевого слова for два параметра — один для имени ключа, другой для его значения.

chars = [ 'A' , 'B', 'C' ]
fruit = ( 'Apple' , 'Banana' , 'Cherry' )
dict = { 'name' : 'Mike' , 'ref' : 'Python' , 'sys' : 'Win' }
for item in chars:
  print(item, end = ' ') #A B C
for item in enumerate(chars):
  print(item, end = ' ') #(0, 'A') (1, 'B') (2, 'C')
for item in zip(chars , fruit):
  print(item , end = ' ') #('A', 'Apple') ('B', 'Banana') ('C', 'Cherry')
for key, value in dict.items():
  print(key , '=' , value, end="; ") #ref = Python; name = Mike; sys = Win;

Еще пример:

chars = [ 'A' , 'B', 'C' ]
fruit = ( 'Apple' , 'Banana' , 'Cherry' )
for key, value in zip(chars , fruit):
  print(key, ' = ', value, end='; ') #A  = Apple; B = Banana; C = Cherry;

Для того чтобы принудительно выйти из цикла, когда выполняется какое-то условие, используется ключевое слово break. Оно располагается внутри инструкции цикла после проверяемого выражения. Когда проверка возвращает значение True, цикл немедленно заканчивается, и программа передает управление следующей инструкции.

list = [2, 4, 1, 15, 6, -1, 17]
for i in list:
    if i < 0:
        print('Встретилось отрицательное число', i)
        break    
else:
    print('Ни одного отрицательного числа не встретилось')

#результат выполнения: Встретилось отрицательное число -1

Иногда нужно пропустить одну из итераций цикла, если выполняется какое-либо условие. Для этого используется ключевое слово continue, которое располагается внутри блока инструкций цикла и предваряется проверочным выражением. Когда результат проверки возвращает значение True, данная итерация заканчивается и программа переходит к следующей.

list = [2, 4, 1, 15, 6, -1, 17]
for i in list:
    if i < 0:
        print('Встретилось отрицательное число', i)
        continue    
    print(i)    

"""результат выполнения:
2
4
1
15
6
Встретилось отрицательное число -1
17
"""