Python перебирает только последнее значение списка
Я использую пакет для запроса списка ячеек в моем Листе Google и собираюсь передать элементы в другом списке (прогнозе) значениям списка Google Sheet. Однако, когда я запускаю свои циклы, он пропускает последний элемент в моем списке прогнозов через каждую ячейку Google Sheet в моем списке. Я неправильно настраиваю циклы for? Это из-за типов элементов списка?
Я пытался следовать разделу библиотеки "Обновление ячеек" (в пакетном режиме): Gspread
Вот как выглядят два списка:
forecasting_range:
Тип = <class 'gspread.models.Cell'>
[<Cell R2C3 '179'>, <Cell R3C3 ''>,...,<Cell R32C3 ''>]
forecasted_session_column:
Тип = <class 'list'>
['179', '754.6296810633474', '638.2052995605169',...,'607.1381980696942']
Вот моя настройка Loop:
for cell in forecasting_range:
for forecast in forecasted_session_column:
cell.value = forecast
Выход:
[<Cell R2C3 '607.1381980696942'>, <Cell R3C3 '607.1381980696942'>,...,<Cell R32C3 '607.1381980696942'>]
2 ответа
Если я вас правильно понимаю, вы хотите, чтобы в ячейке 1 был прогноз 1, в ячейке 2 прогноз 2 и так далее. Если так, то используйте один цикл, а не два.
Каждый раз, когда выполняется ваш внешний цикл, он устанавливает значение каждой ячейки в forecasting_range
к каждому значению в forecasted_session_column
, В конце выполнения каждого внутреннего цикла ячейка будет содержать только последнее значение.
for i in range(0,len(forecasting_range)):
forecasting_range[i].value = forecasted_session_column[i]
Это использует переменную i
вести учет индекса в обоих списках, чтобы они совпадали. Обратите внимание, что это решение предполагает, что оба списка имеют одинаковую длину.
Во втором цикле вы перебираете список forecasted_session_column
, Вы устанавливаете каждый cell
в 179
и затем следующее значение, а затем следующее, пока не будет установлено значение '607.1381980696942'
,
Пример из IDLE того, что происходит:
>>> cells = [i for i in range(10)]
>>> values = ['a', 'b', 'c']
>>> for cell in cells:
for value in values:
cells[cell] = value
>>> cells
['c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c']