Цикл for в Python — используется для многократного повторения инструкций или части программы.
Именно цикл for используется в основном для перебора последовательности элементов (списков, кортежей, строк) и вообще любых итерируемых объектов.
Синтаксис цикла for
for значение in последовательность: Тело цикла for
Тело цикла for отделяется отступом.
my_list = ['один', 'два', 'три'] for item in my_list: print(item) #один #два #три
Итерация (Iteration) — это один круг повторения цикла.
my_str
— Итерируемый объект (Iterable) — объект, который отдает по одному результату за каждую итерацию.
item
— Итератор (iterator) — результат каждой итерации.
Как работает цикл for
Цикл будет продолжается пока не будет достигнут последний элемент последовательность.
Операторы break и continue в цикле for
Эти операторы необходимы для управления циклом, работают точно так же, как и в цикле while.
Оператор break
С помощью оператора break
, мы можем прервать выполнение цикла:
my_list = ['один', 'два', 'три'] for item in my_list: if item == 'три': break print(item) #один #два
Оператор continue
С помощью оператора continue
, мы можем прервать выполнение текущей итерации и перейти к следующей:
my_list = ['один', 'два', 'три'] for item in my_list: if item == 'два': continue print(item) #один #три
Else в цикле for
Оператор else
будет выполнен после полного завершения цикла.
Синтаксис else:
for <переменная> in <последовательность>: <действие> else: <действие>
my_list = ['один', 'два', 'три'] for item in my_list: print(item) else: print('Цикл завершен') #один #два #три #Цикл завершен
Но стоит заметить, если цикл будет прерван оператором break
, то else
не будет исполнен:
my_list = ['один', 'два', 'три'] for item in my_list: if item == 'три': break print(item) else: print('Цикл завершен') #один #два
Примеры цикла for с последовательностями
Цикл for по строке
Создадим строку и с помощью цикла переберем все символы этой строки:
my_str = 'FullStacker' for char in my_str: print(char) #F #u #l #l #S #t #a #c #k #e #r
Для того чтобы вывести в обратном порядке, можно воспользоваться функцией reversed()
my_str = 'FullStacker' for char in reversed(my_str): print(char) #r #e #k #c #a #t #S #l #l #u #F
Цикл for по списку
С помощью цикла переберем элементы списка и выведем все элементы, записанные в нижнем регистре:
my_list = ['Один', 'Два', 'Три'] for item in my_list: print(item.lower()) #один #два #три
Цикл for по кортежу
С помощью цикла выведем умноженные на 2 элементы кортежа:
my_tuple = (1, 2, 3) for item in my_tuple: print(item * 2) #2 #4 #6
Цикл for по множеству
С помощью цикла создадим второе множество, состоящее из квадратов элементов первого множества:
my_set = {1, 2, 3} my_set_2 = set() for item in my_set: my_set_2.add(item ** 2) print(my_set_2) #{1, 4, 9}
Цикл for по словарю
Т.к. словарь это не последовательность, а набор элементов с доступом по ключу, то здесь будет немного сложнее.
Для того чтобы перебрать словарь в цикле можно воспользоваться методом словарей dict.items()
, который возвращает последовательность элементов:
my_dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'} for key, value in my_dict.items(): print(key, value) #key1 value1 #key2 value2 #key3 value3
Цикл for по диапазону range
С помощью функции range()
сгенерируем последовательность от 1 до 5 и выведем ее в цикле:
for i in range(1, 6): print(i) #1 #2 #3 #4 #5
Т.к. функции range()
имеет возможность задавать не только начало и конец диапазона, но и шаг:
range(start,stop,step size)
Выведем только нечетные числа диапазона от 1 до 10 (т.е. с шагом 2):
for i in range(1, 11, 2): print(i) #1 #3 #5 #7 #9
Также с помощью отрицательного шага, можно вывести последовательность в обратном порядке:
for i in range(5, 0, -1): print(i) #5 #4 #3 #2 #1
Цикл for в одну строку
Также Python дает возможность записи цикла for в одну строку:
[выражение for элемент in последовательность if условие]
Условие if указывается опционально.
Для примера, преобразуем строку в список, состоящий из элементов строки, с помощью цикла for с записью в одну строку:
my_str = 'FullStacker' my_list = [char for char in my_str] print(my_list) #['F', 'u', 'l', 'l', 'S', 't', 'a', 'c', 'k', 'e', 'r']