使用:Python 2.4
現在、2つのリストを反復処理し、両方のリストに存在する2つの要素に基づいて一致させるネストされたforループがあります。一致するものが見つかると、それは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']]
スペクトルの最終リストは基本的に同じで、ネストされた配列であり、次のようになります。
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に精通していますが、決して専門家ではありません。これをスピードアップする方法を教えてくれる専門家を探しています。どんな助けでも大歓迎です!