>>> for card in accusation:··#··или for card in accusation.keys():
…·····print(card)
…
room
weapon
person
Чтобы итерировать по значениям, а не по ключам, следует использовать функцию values():
>>> for value in accusation.values():
…·····print(value)
…
ballroom
lead pipe
Col. Mustard
Чтобы вернуть как ключ, так и значение кортежа, вы можете использовать функцию items():
>>> for item in accusation.items():
…·····print(item)
…
('room', 'ballroom')
('weapon', 'lead pipe')
('person', 'Col. Mustard')
Помните, что можете присвоить значение кортежу за один шаг. Для каждого кортежа, возвращенного функцией items(), присвойте первое значение (ключ) переменной card, а второе (значение) — переменной contents:
>>> for card, contents in accusation.items():
…·····print('Card', card, 'has the contents', contents)
…
Card weapon has the contents lead pipe
Card person has the contents Col. Mustard
Card room has the contents ballroom
Прерываем цикл с помощью break
Ключевое слово break в цикле for прерывает этот цикл точно так же, как и цикл while.
Пропускаем итерации с помощью continue
Добавление ключевого слова continue в цикл for позволяет перейти на следующую итерацию цикла, как и в случае с циклом while.
Проверяем, завершился ли цикл заранее, с помощью else
Как и в цикле while, в for имеется опциональный блок else, который проверяет, выполнился ли цикл for полностью. Если ключевое слово break не было вызвано, будет выполнен блок else.
Это полезно, если вам нужно убедиться в том, что предыдущий цикл выполнился полностью, вместо того чтобы рано прерваться. Цикл for в следующем примере выводит на экран название сыра и прерывается, если сыра в магазине не найдется:
>>> cheeses = []
>>> for cheese in cheeses:
…·····print('This shop has some lovely', cheese)
…·····break
… else:··# отсутствие прерывания означает, что сыра нет
…·····print('This is not much of a cheese shop, is it?')
…
This is not much of a cheese shop, is it?
Как и в цикле while, в цикле for использование блока else может показаться нелогичным. Можно рассматривать цикл for как поиск чего-то, в таком случае else будет вызываться, если вы ничего не нашли. Чтобы получить тот же эффект без блока else, используйте переменную, которая будет показывать, нашелся ли искомый элемент в цикле for, как здесь:
>>> cheeses = []
>>> found_one = False
>>> for cheese in cheeses:
…·····found_one = True
…·····print('This shop has some lovely', cheese)
…·····break
…
>>> if not found_one:
…·····print('This is not much of a cheese shop, is it?')
…
This is not much of a cheese shop, is it?
Итерирование по нескольким последовательностям с помощью функции zip()
Существует еще один полезный прием — параллельное итерирование по нескольким последовательностям с помощью функции zip():
>>> days = ['Monday', 'Tuesday', 'Wednesday']
>>> fruits = ['banana', 'orange', 'peach']
>>> drinks = ['coffee', 'tea', 'beer']
>>> desserts = ['tiramisu', 'ice cream', 'pie', 'pudding']
>>> for day, fruit, drink, dessert in zip(days, fruits, drinks, desserts):
…·····print(day, ": drink", drink, "eat", fruit, "enjoy", dessert)
…