在嵌套的python列表中查找有效的search方法

我是这个论坛的新手,基本上是一名networking工程师,学习Python来自动执行一些任务,使我的工作更有效率。 那么,直接点。 我有一张大的excel工作簿,每张大约有5万行。 学习了几个星期和广泛的search后,我能够加载整个Excel单元格值嵌套列表中,例如

list [sheet_index][row_index][column_index]. 

现在得到input后,下一部分是操纵这些数据。 我的任务是从每一行中查找特定的列值,并在整个工作簿中search,如果find,则不同列中的相应数据应与原始search对象一致。

我的方法如下所示:

在一个大列表中获取单元格值(正如我前面提到的那样)将该列表在一个不同的variables中作为一维列表进行扁平化。 在一个循环中,从一行(固定列)中获取特定值,然后在整个一维列表中search,如果find,则将相应的值写入另一个excel文件中。

到目前为止,这种方法工作正常,还有一个额外的长时间拖延,这是从Excel VBA程序漂移到Python的动机。 所以,我在这里问问专家是否有一些非常基本的东西,我错过了。 这是下面的代码:

 import xlrd import xlwt from compiler.ast import flatten datafile = 'Peering_DB.xls' # Data Read Function Definition def main(datafile): wb = xlrd.open_workbook(datafile) wwb = copy(wb) data = [[[wb.sheet_by_index(i).cell_value(r, col) for col in range(wb.sheet_by_index(i).ncols)] for r in range(wb.sheet_by_index(i).nrows)] for i in range(0,4)] data1 = flatten(data) k = 2 x = 0 while x < 4: r = wb.sheet_by_index(x).nrows A = data[x][k][1] B = data[x][k][2] counter = 4 loc = [loc for (loc , e ) in enumerate(data1) if e == A] if len(loc) != 1: for n in range(len(loc)): if data1[loc[n] + 1] != B: wwb.get_sheet(x).write(k,counter,data1[loc[n] + 1]) counter = counter + 1 else: wwb.get_sheet(x).write(k,counter,"No Backup") k = k + 1 if k == r - 1 and x < 3: print 'Page number ', x , 'Completed' x = x + 1 k = 2 elif k == r and x == 3: print "Operation Completed Successfully" break wwb.save('Peering_output.xls') 

主(数据文件)