使用:Python 2.4
目前,我有一个嵌套的 for 循环,它遍历 2 个列表并根据两个列表中存在的两个元素进行匹配。一旦找到匹配项,它就会从 r120Final 列表中取出元素,并将其放入一个名为“r120Delta”的新列表中:
for r120item in r120Final:
for spectraItem in spectraFinal:
if(str(spectraItem[0]) == r120item[2].strip()) and (str(spectraItem[25]) == r120item[10]):
r120Delta.append(r120item)
break
问题是这太慢了,而且列表没有那么深。R120 约 64,000 行,Spectra 约 150,000 行。
r120Final 列表是一个嵌套数组,它看起来像这样:
r120Final[0] = [['xxx','xxx','12345','xxx','xxx','xxx','xxx','xxx','xxx','xxx','234567']]
...
r120Final[n] = [['xxx','xxx','99999','xxx','xxx','xxx','xxx','xxx','xxx','xxx','678901']]
SpectrumFinal 列表本质上是相同的,一个嵌套数组,它看起来像这样:
spectraFinal[0] = [['12345','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','234567']]
...
spectraFinal[0] = [['99999','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','xxx','678901']]
最后,“r120Delta”的原因是这样我就可以在 r120Final 和 r120Delta 之间进行列表差异,并检索不匹配的 r120 数据元素。这是我为这个任务定义的函数,而且速度很慢:
def listDiff( diffList, completeList ):
returnList = []
for completeItem in completeList:
if not completeItem in diffList:
returnList.append(completeItem)
return returnList
基本上,我精通 Python,但绝不是专家。我正在寻找一些专家来告诉我如何加快速度。任何帮助表示赞赏!