Python — замечательный язык. Он прост в изучении для новичков, и в то же время обладает обширными возможностями. При программирование на Python можно лишь наслаждаться аккуратным, минималистичным и красивым кодом. Особенно, если следовать рекомендациям, которые описаны в этой и некоторых других статьях. В посте рассказано про циклы в Python.
Синтаксис Питона достаточно простой, однако когда вы начинаете программировать, то вероятно замечаете, что красота и минималистичность местами куда-то исчезает. Вероятно, это связано с тем, что Python-код позволяет использовать множество идиом — специфичных конструкций кода, не присущих другим языкам.
Как не надо писать циклы FOR на Python?
Для цикла используются многие, в том числе и нижеописанные, конструкции. На самом деле, это даже быстрее, чем в других языках. Кроме того, такой код весьма читаем.
Цикл по диапазону значений в Python
Одним из самых распространенных является цикл перебора некоторого диапазона значений. Что-то типа от 0 до 1000, от 1 до 99 — в общем, какие угодно диапазоны. Хороший способ использовать циклы в Python показан ниже.
#Так делать не надо!
for i in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
#бла-бла
#А вот так надо. Это же классно!
for i in range(11):
#бла-бла
В примере используется функция range(). В нее надо передавать значение, до которого будет идти перебор. При этом само значение включено не будет. В функцию можно передавать начало, конец и даже шаг перебора в качестве аргументов.
Цикл с использованием индексов и значений в Python
Еще одним частым применением циклов является цикл по последовательностям, в которых используются пары «индекс-значение».
#Вот так не нужно делать
for i in range(len(array)):
#действия с i
#действия с array[i]
#А так нужно, да и еще и удобно!
for i, val in enumerate(array):
#действия с i
#действия val
Используемая функция enumerate() возвращает кортеж, состоящий из пар «индекс-значение». В примере это i и val. Еще функция умеет смещаться — для этого нужно передать ей индекс, с которого нужно начать перебор.
Цикл в обратном порядке в Python
И последнее, что рассмотрим в этой статье — это цикл по последовательности в обратном порядке. Циклы в Python конечно-же можно строить и с конца последовательности, постепенно приближаясь к ее началу. Только делать это нужно правильно.
#Вот так в обратном порядке последовательность не перебирают
for val in range(len(array) - 1, -1, -1):
#действия
#А вот так перебирают. Оцените удобство!
for val in reversed(array)
#действия
Функция reversed() просто перебирает последовательность в обратном порядке. Большего о ней рассказать нельзя. Берет последовательность, перебирает с конца, и точка.
На этом все. В статье показаны три общие идиомы для циклов, которые вероятно помогут вам сделать код лаконичнее и читабельней. Согласитесь, это: reversed(array) понять гораздо проще, чем это: range(len(array) -1, -1, -1).