Цикл for и функция range в Python

Установка Python 

Выбор текстового редактора 

Запуск программ Python в командной строке 

Числа и арифметические операторы Python 

Строки и функция print в Python 

Списки и кортежи в Python 

Сегментация последовательностей в Python 

Цикл for и функция range в Python 

Команда if и функция input в Python 

Словари в Python 

Множества в Python 

Цикл while в Python 

Функции в Python 

Классы в Python 

Файлы и исключения в Python 

Функции json. Сохранение данных Python 

Тестирование функций и классов на Python

Python массивы. Библиотека NumPy

В программирование часто сталкиваются с вопросом перебрать весь список и извлечь из него необходимые данные. Цикл for позволяет перебрать любой итерируемый объект, то есть объект, из которого команда for сможет брать элементы по одному, пока не будет обработан последний элемент, не зависимо от его длины.

Содержание страницы:
1.1. Цикл for в Python
1.2. Аргумент end фунции print
1.3. Действия во время выполнения цикла for
1.4. Основные ошибки с циклом for
2.1. Встроенная функция range
2.2. Создание числового списка с помощью функции range
2.4. Перебор списка по индексам с помощью функции range
3. Генераторы списков

 

 

 

 

 

 

 

 

 

1. Цикл for в Python. 

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

>>> cars = ['ford', 'opel', 'audi', 'land rover', 'bmw']
>>> for brend in cars:
...     print(brend)  # отступ в 4 пробела
...
ford
opel
audi
land rover
bmw

Во второй строке кода определяется цикл for. Python берет каждую торговую марку из списка и сохраняет его в переменной brend. После двоеточия код на следующей строке должен начинается с 4 пробелами. С помощью функции print, название марки выводится в переменной brand. Затем код повторяется до тех пор, пока не закончатся элементы в списке.

 

 

1.2. Аргумент end фунции print.  

Функция print выводит свой аргумент, после чего курсор перемещает на следующую строку, но при большом количестве элементов в списке, не всегда это удобно. Можно воспользоваться аргументом end, записав его после переменной. 

>>> cars = ['ford', 'opel', 'audi', 'land rover', 'bmw']
>>> for brend in cars:
...     print(brend, end=' ')  # отступ в 4 пробела
...
ford opel audi land rover bmw

Аргумент end записывается в виде end=' 'Какое количество пробелов вы укажите, такое и будет после выводится между переменными. 

 

1.3. Действия во время выполнения цикла for. 

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

>>> cars = ['ford', 'opel', 'audi', 'land rover', 'bmw']
>>> for brend in cars:
...     print(f"Автомобили торговой марки {brend.title()} очень надежные")
...
Автомобили торговой марки Ford очень надежные
Автомобили торговой марки Opel очень надежные
Автомобили торговой марки Audi очень надежные
Автомобили торговой марки Land Rover очень надежные
Автомобили торговой марки Bmw очень надежные

Со строками цикл for работает также как и со списком.

>>> mesage = 'Hello World!'
>>> for i in mesage:
...     print(i * 5, end=' ')
...
HHHHH eeeee lllll lllll ooooo       WWWWW ooooo rrrrr lllll ddddd !!!!!

 

1.4. Основные ошибки с циклом for. 

В Python связь одной строки кода с предшествующей строкой обозначается отступами. В больших программах встречаются блоки кода с отступами в несколько разных уровней. Благодаря отступам, сильно упрощается чтение кода. Основные ошибки как раз и складываются из ошибок в пропущенных или лишних отступах. 

>>> mesage = 'Hello World!'
>>> for i in mesage:
... print(i * 5, end=' ') # нет отступа в 4 пробела
  File "<stdin>", line 2
    print(i * 5, end=' ')
    ^
IndentationError: expected an indented block

Для устранения этой ошибки, достаточно поставить в следующей строке после команды for 4 пробела. В основном, если вы работаете в любом современном текстовом редакторе, то после двоеточия он сам поставит отступы на следующей строке.

 

 

2. 1. Встроенная функция range. 

Встроенная функция range() используется для построения числовых последовательностей. В примере используем команду for и функцию range для выполнения ровно 10 итераций с выводом значения от 0 до 10.

>>> for x in range(10):
...     print(x, end=' ')
...
0 1 2 3 4 5 6 7 8 9

 

 

При передаче только одного аргумента, последовательность будет начинаться с 0 и до значения аргумента (10), не включая его. Одна из самых распространённых ошибок, это когда разработчик предполагает, что значение аргумента функции range включается в сгенерированную последовательность. 

Приведем пример с двумя аргументами. Выведем последовательность от 20 до 30.

>>> for x in range(20, 30):
...     print(x, end=' ')
...
20 21 22 23 24 25 26 27 28 29

 

2.2. Создание числового списка с помощью функции range. 

>>> numbers = list(range(5, 25))
>>> print(numbers)
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]

>>> numbers = list(range(0, 100, 15))
>>> print(numbers)
[0, 15, 30, 45, 60, 75, 90]

 

 

>>> a = []
>>> for i in range(1, 11):
...     a.append(i**2)
...
>>> print(a)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

На каждом цикле переменная возводится в квадрат и добавляется в список. 

 

2.4. Перебор списка по индексам с помощью функции range

С помощью цикла for и функции range список можно перебирать по индексам и с каждым значением в списки, производить любые операции. Приведем пример, перебора списка по индексам, с помощью функции range и функции len, которая определяет длину списка. 

>>> list_1 = [1, 3, 5, 10, 12, 20]
>>> for index in range(len(list_1)):
...     list_1[index] += 100
...
>>> print(list_1)
[101, 103, 105, 110, 112, 120]

В начале определим длину списка с помощью функции len. Затем это значение передается функции range. В нашем примере длина списка равна 6. С каждым проходом цикла for, index принимает значения от 0 до 6 (не включая 6). В теле цикла мы вызываем список list_1 и обращаемся к элементам списка по индексам, равные значению переменной index. Каждое значение индекса мы увеличивает на 100. Затем с помощью функции print выводим список на экран и видим что все значения увеличены на 100. 

С помощью индексов и функции range мы можем объединять информацию из разных списков. В примере ниже мы имеем список с именами, а второй список с фамилиями. Выведем на экран имя и фамилию:

>>> list_4 = ['Artem', 'Serg', 'Georgy', 'Petr']
>>> list_5 = ['Ivanov', 'Petrov', 'Sidorov', 'Ulyanov']
>>> for index in range(len(list_4)):
...     print(list_4[index], list_5[index])
...
Artem Ivanov
Serg Petrov
Georgy Sidorov
Petr Ulyanov

В результате получили общие данные на экране.

Аналогично можно создавать новые списки из двух или трех списков. Приведем пример перемножения трех списков:

>>> list_1 = [1, 3, 5, 10, 12, 20]
>>> list_2 = [20, -9, 42, 10, 755, 12]
>>> list_3 = [12, 85, 96, 155, 235, 12]
>>> list_new = []
>>> for index in range(len(list_1)):
...     list_new.append(list_1[index] * list_2[index] * list_3[index])
...
>>> print(list_new)
[240, -2295, 20160, 15500, 2129100, 2880]

В начале мы создадим пустой новый список вне цикла, куда будем добавлять результат с помощью функции append. В результате мы получим новый список с результатом перемножения предыдущих списков по индексам. 

Важно помнить, что программа будет работать, если вы уверены, что списки одинаковой длины. Проверить это вы всегда можете с помощью встроенной функции len

 

3. Генераторы списков в Python

Состоящий выше пример построения квадратов чисел в разделе 2.2 состоял из нескольких строк кода.  Генератор списка позволяет сгенерировать тот же список, но всего в одной строке. Определите название списка, после откройте квадратные скобки. Запишите выражение для значений, в нашем случает i ** 2. Затем напишите цикл for для генерирования чисел, которые будут передаваться выражению и закройте квадратные скобки. 

>>> a = [i ** 2 for i in range(1,11)]
>>> print(a)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

В результате получился аналогичный список. 

 

Далее: Команда if и функция input в Python

Назад: Сегментация последовательностей в Python