将值存储在嵌套for循环的不同变量中

时间:2019-04-04 13:53:24

标签: python excel loops for-loop nested-loops

我当前正在编写一段代码,该代码循环遍历电子表格的行和列,然后使用函数参数中行r和列c处的单元格值。我目前的工作方式如下:

for i in range (1, ws.max_row+1): 
    first_column = worksheet.cell(i,1).value
    second_column = worksheet.cell(i,2).value
    third_column = worksheet.cell(i,3).value
    result = functionX.create(first_column, second_column, third_column)

索引i在工作表中的行中循环。我正在使用worksheet.cell(row,column).value库中的openpyxl函数,并将它们存储在x_column变量中。稍后,这些变量将在class.create()函数的同一for循环中用作参数。

但是,我想做的是也使用单独的索引来跟踪循环中的列。原因是当用户在行i和列j遇到一个空单元格时,我想向用户打印一条消息。

作为一种解决方案,我认为使用嵌套的for循环来跟踪列可能会很有用:

for i in range (1, ws.max_row+1):
    for j in range (1,4):
        first_column = worksheet.cell(i,j).value
        second_column = worksheet.cell(i,j).value
        third_column = worksheet.cell(i,j).value
    result = functionX.create(first_column, second_column, third_column)

但是,这显然不会在第二个循环的相同迭代中增加索引j。知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

如果您真的想对列使用for循环,则可以使用列表对单元格的值进行分类,然后解压缩该列表以将分类后的值传递给方法.create()

如果您想添加更多列而不更改大量代码,而只是增加第二个循环的范围,则这也很灵活。

它看起来像这样:

for i in range (1, ws.max_row+1):
    column_list = []
    for j in range (1, 4):
        column_list.append(worksheet.cell(i,j).value)

    # the '*' unpacks the whole list
    result = the_class.create(*column_list)

对您有用吗?