Цикл for в Python

Содержание
Введение
for _ in
range()
Похожие статьи

Рассмотрим файл for_loop.py

for i in range(1,4):print(i)

python for_loop.py

1
2
3

Всё работает прекрасно. Обратите внимание, что выведены были только i от 1 до 3. 4 python не вывел.

Читать однострочные скрипты неудобно. Обычно каждое действие стараются записать на отдельной строке.

for i in range(1,3): print(i)

python for_loop.py

1
2
3

Если написать код без хотя бы одного пробела перед print

for i in range(1,4): print(i)

то работать код не будет. Получится ошибка

File "/home/andrei/python/for_loop.py", line 2 print(i) ^ IndentationError: expected an indented block

Поэтому нужно поставить перед print пробел

for _ in

Пример с _

retries = 3 retries_ = abs(int(retries)) for _ in range(retries_ + 1): print(_)

1
2
3
4

range()

for i in range(0, 4): print(i)

0 1 2 3

Такого же результата можно добиться задав range из кортежа

r = (1, 3) for i in range(r[0], r[1] + 1): print(i)

0 1 2 3

Если нужно использовать сложный range, например с разрывами - может помочь генератор списков

ranges = [(0, 2), (14, 17), (20, 20)] digits = [d for r in ranges for d in range(r[0], r[1] + 1)] print(digits)

[0, 1, 2, 14, 15, 16, 17, 20]

Это может пригодится, например, для генерации каких-то определённых символов функцией chr() (Python 3) или unichr() (Python 2)

try: get_char = unichr except NameError: get_char = chr ranges = [ (0x0021, 0x0021), (0x0023, 0x0026), (0x00A1, 0x00AC) ] symbols = [get_char(s) for r in ranges for s in range(r[0], r[1] + 1)] print(symbols)

['!', '#', '$', '%', '&', '¡', '¢', '£', '¤', '¥', '¦', '§', '¨', '©', 'ª', '«', '¬']

Сложение range

В Python 2 можно было явно складывать range и range потому что range() возвращал список

# Python 2 r = range(0, 3) + range(7, 9) print(r)

[0, 1, 2, 7, 8]

В Python 3 будет ошибка, потому что range() возвращает итерируемый объект класса range

Traceback (most recent call last): File "range_plus_range.py", line 1, in <module> r = range(0, 3) + range(7, 9) TypeError: unsupported operand type(s) for +: 'range' and 'range'

print(range(0, 3)) print(type(range(0, 3))) print(type(iter(range(0,3))))

range(0, 3) <class 'range'> <class 'range_iterator'>

r = iter(range(0, 3)) print(next(r)) print(next(r)) print(next(r))

0 1 2

Похожие статьи
Built-in Collections
Строки
f-string
format string
Списки []
list comprehension: Абстракция списка
Словари {:}
dict comprehension: Абстракция словаря
Множества {}
set comprehension: Абстракция множества
Кортежи ()
Протоколы
Итерация
Python
if, elif, else
Циклы

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@eth1.ru если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: