Как перечислять работу со списком с использованием 2 переменных (X, Y) в Python 3? [Дубликат]

Короткий ответ: вам нужно выполнить обратный вызов следующим образом:

function callback(response) {
    // Here you can do what ever you want with the response object.
    console.log(response);
}

$.ajax({
    url: "...",
    success: callback
});
0
задан handle 25 November 2014 в 11:02
поделиться

4 ответа

Любой итератор является «одним выстрелом» в том смысле, что когда он полностью выполнен, он становится пустым и больше не может использоваться. Когда вы вызвали logging.debug( list(e) ), вы использовали его в функции list () и так истощили его. Таким образом, следующая попытка использовать его в цикле for ничего не дает.

С измененным кодом, когда enumerate () вызывается снова после этого отладки, поведение скрипта изменяется - оно вызывает IndexError на y[int(k)].append( v ) ; Я не исправлю это для вас, но это достаточно, чтобы начало цикла выполнялось.

2
ответ дан Netch 26 August 2018 в 17:14
поделиться

эта строка:

logging.debug( list(e) )

потребляет итератор, поэтому, когда вы здесь:

for k, v in e:
   # ...

e уже исчерпан.

1
ответ дан bruno desthuilliers 26 August 2018 в 17:14
поделиться

попробуйте это вместо:

e = list(enumerate(d))
0
ответ дан fleman 26 August 2018 в 17:14
поделиться

Поскольку enumerate возвращает итератор:

>>> e = enumerate(range(4))
>>> list(e)
[(0, 0), (1, 1), (2, 2), (3, 3)]
>>> list(e)
[]

Как только конец достигнут, e.next() вызывает исключение StopIteration:

>>> e.next()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

Таким образом, вы не можете повторить дважды по e. Вам нужно будет заново создать итератор.

3
ответ дан fredtantini 26 August 2018 в 17:14
поделиться
Другие вопросы по тегам:

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