Как делает Python для цикла с повторяемой работой? ('для стороны в feed.entry')

Что делает for party in feed.entry имейте значение и как это для цикла на самом деле работает?

for party in feed.entry:
    print party.location.address.text

(Я привык к стилю C++ для циклов, но циклы Python оставили меня смущенным.)

6
задан smci 5 September 2019 в 12:22
поделиться

6 ответов

feed.entry - это то, что допускает итерацию и содержит объекты определенного типа. Это примерно похоже на c ++:

for (feed::iterator party = feed.entry.begin(); party != feed.entry.end(); ++party) {
   cout << (*party).location.address.text;
}
6
ответ дан 8 December 2019 в 02:19
поделиться

feed.entry - это свойство канала, и его значение (если это не так, этот код завершится ошибкой) объект, реализующий протокол итерации (например, массив) и имеющий iter метод, который возвращает объект-итератор

У итератора есть метод next (), возвращающий следующий элемент или вызывающий исключение, поэтому цикл for в Python на самом деле выглядит так:

iterator = feed.entry.__iter__()
while True:
    try:
        party = iterator.next()
    except StopIteration:
        # StopIteration exception is raised after last element
        break

    # loop code
    print party.location.address.text
23
ответ дан 8 December 2019 в 02:19
поделиться

Чтобы добавить мои 0,05 доллара к предыдущим ответам, вы также можете взглянуть на встроенную функцию перечисления

for i, season in enumerate(['Spring', 'Summer', 'Fall', 'Winter']):
    print i, season

0 Spring
1 Summer
2 Fall
3 Winter
5
ответ дан 8 December 2019 в 02:19
поделиться

party просто выполняет итерацию по итерация feed.entry

Взгляните на объяснения Dive into Python .

4
ответ дан 8 December 2019 в 02:19
поделиться

В Python для bucles не похожи на C / C ++, они больше всего похожи на PHP foreach . То, что вы делаете, не повторяется, как в , а с «(инициализация; условие; приращение)», а просто выполняет итерацию по каждому элементу в списке (строки ИТЕРИРУЕМЫ, как списки).

Например, :

for number in range(5):
    print number

выведет

0
1
2
3
4
1
ответ дан 8 December 2019 в 02:19
поделиться

Цикл Python for работает с итераторами , который должен реализовывать протокол итератора . Для получения дополнительной информации см .:

0
ответ дан 8 December 2019 в 02:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: