在嵌套的for循环中将值存储在不同的变量中
Storing values in different variables in nested for loop
我目前正在编写一段代码,循环遍历展开的行和列sheet,然后使用行 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
循环遍历 sheet 中的行。我正在使用 openpyxl
库中的 worksheet.cell(row,column).value
函数并将它们存储在 x_column
变量中。后来,这些变量在相同的 for 循环 中用作 class.create()
函数 的参数。
但是,我想做的是使用单独的索引来跟踪循环中的列。这样做的原因是,当用户在 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
。知道如何解决这个问题吗?
如果您真的想对列使用 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)
这对你有用吗?
我目前正在编写一段代码,循环遍历展开的行和列sheet,然后使用行 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
循环遍历 sheet 中的行。我正在使用 openpyxl
库中的 worksheet.cell(row,column).value
函数并将它们存储在 x_column
变量中。后来,这些变量在相同的 for 循环 中用作 class.create()
函数 的参数。
但是,我想做的是使用单独的索引来跟踪循环中的列。这样做的原因是,当用户在 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
。知道如何解决这个问题吗?
如果您真的想对列使用 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)
这对你有用吗?