В Python, фактически любой тип последовательности, например список list
, кортеж tuple
, или частный случай кортежа - строка str
, автоматически поддерживает создание итератора.
>>> line = 'joy' >>> for item in line: ... print(item) # j # o # y >>> a, b, c = line >>> print(a, b, c) # j o y
Применение функции iter()
к словарю dict
, возвращает итератор, который будет перебирать ключи словаря:
>>> m = {'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6, ... 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12} >>> for key in m: ... print(key, m[key]) # Jan 1 # Feb 2 # Mar 3 # Apr 4 # May 5 # Jun 6 # Jul 7 # Aug 8 # Sep 9 # Oct 10 # Nov 11 # Dec 12
Обратите внимание, что начиная с Python 3.7 порядок итерации словаря гарантированно совпадает с порядком вставки. В более ранних версиях поведение было не определено и могло различаться в зависимости от реализации.
Вызов iter()
со словарем, в качестве аргумента, всегда возвращает поток ключей, но у словарей есть методы, которые возвращают другие итераторы. Если необходимо перебрать значения словаря value
или пары (key, value)
, то можно явно вызвать методы dict.values()
или dict.items()
, чтобы получить соответствующий итератор.
Конструктор dict()
может принимать итератор, который возвращает конечный поток кортежей (key, value)
:
>>> L = [('Italy', 'Rome'), ('France', 'Paris'), ('US', 'Washington DC')] >>> dict(iter(L)) {'Italy': 'Rome', 'France': 'Paris', 'US': 'Washington DC'}
Файлы (файловый объект) также поддерживают итерацию путём вызова метода file.readline()
до тех пор, пока в файле не кончатся строки. Это означает, что из открытого файла можно читать по одной строке за один раз, что экономит память:
with open('dir/to/file', 'r') as file: for line in file: # делаем что-то c каждой строкой ...
Множества set
могут наполнять своё содержимое из итерируемого объекта и позволяют выполнять итерацию по элементам множества:
>>> s = {3, 7, 11, 13} >>> for i in s: ... print(i) # 11 # 3 # 13 # 7