首页 > 解决方案 > 我如何使用 for 循环,以便在它运行我的第一个列表之后,它将继续使用我的第二个 for 循环和另一个列表

问题描述

for i in range (len(outputList)):
    worksheet.write(i+1, 0, outputList[i][0])
    worksheet.write(i+1, 3, outputList[i][1], center)
    if outputList[i][2] == "Passed":
        worksheet.write(i+1, 1, outputList[i][2], passed) 

    elif outputList[i][2] == "Failed":
        worksheet.write(i+1, 1, outputList[i][2], failed)

        if outputList[i][3] == "Severe":
            worksheet.write(i+1, 2, outputList[i][3], severe)

        if outputList[i][3] == "Moderate":
            worksheet.write(i+1, 2, outputList[i][3], moderate)

        if outputList[i][3] == "Minor":
            worksheet.write(i+1, 2, outputList[i][3], minor)

嗨,我正在尝试使用 python 将值输入到我的自动生成的 excel 中,我想在将值从上面的 for 循环插入到我的 excel 中之后,我想在下面插入另一个列表中的值,但我该怎么做呢?下面的其他 for 循环的代码:

for i in range (len(passList)):
            worksheet.write(i+1, 0, passList[i][0])
            worksheet.write(i+1, 3, passList[i][1], center)    
            if passList[i][2] == "Passed":
                worksheet.write(i+1, 1, passList[i][2], passed)     
                if passList[i][3] == "None":
                    worksheet.write(+1, 2, passList[i][3]) 

标签: pythonexcelxlsxwriter

解决方案


如果我已经正确理解了您想要做什么,那么这样的事情可能会起作用:

for i, item in enumerate(outputList, start=1):
    worksheet.write(i, 0, item[0])
    # ...

for i, item in enumerate(passList, start=len(outputList+1)):
    worksheet.write(i, 0, item[0])
    # ...

我使用内置的[enumerate]1函数来避免输入outputList[i]无数次,并使用它的可选start参数来调整工作表的编号。

编辑

如果您想对两个列表执行完全相同的操作,则可以从一开始就将它们连接起来:

for i, item in enumerate(outputList + passList, start=1):
    # ...

显然,这将为连接列表使用一些额外的内存。如果这是不可接受的,您可以使用itertools.chain而不是连接它们。


推荐阅读