Python仅遍历最后一个列表值

时间:2018-08-02 20:17:21

标签: python gspread

我正在使用一个程序包查询我的Google表格中的单元格列表,并且希望将其他列表(预测)中的元素传递给Google表格列表的值。但是,当我运行循环时,它将通过列表中的每个Google表格单元格传递预测列表中的最后一个元素。我是否错误地设置了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']

这是我的循环设置:

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 个答案:

答案 0 :(得分: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来计数跟踪两个列表中的索引,以便它们匹配在一起。请注意,此解决方案希望两个列表的长度相同。

答案 1 :(得分:1)

在第二个循环中,您遍历列表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']