old_rowsとnew_rowsと呼ぶリストの 2 つのリストがあります。
各行は、ちょうど 30 個のアイテムのリストです。各リストには非常に多くの (そして不明な) 行数が含まれる場合があります。2 つのリストには、異なる行数が含まれる場合があります。
[ [row1_item1, row1_item2... row1_item30],
[row2_item1, row2_item2... row2_item30],
....
[rowN_item1, rowN_item2... rowN_item30] ]
ここで、N は大きくて可変です。
私がやりたいのは、old_rowsとnew_rowsを比較して、「重要な違い」のリストを作成することです。行間で約 10 項目を比較することにのみ関心があります。それらの項目のみの 2 つの行を比較する関数が既にあります。
だから私はこれを試しました:
changes = []
for o, n in izip_longest(old_rows, new_rows):
if not o:
changes.append(output_row(None, n))
continue
if not n:
continue
if significant_differences(o, n):
changes.append(output_row(o, n))
厄介なことに、これは Python 2.4 で動作する必要があるため、izip_longestは廃止されました。また、説明されていないnextは 2.4 に対応していないため、izip_longest のコードは機能しません。
潜在的に非常に大きなリストに対処するために、ジェネレーターを使用してPythonicで高速なものを探すのが理想的です。