2

old_rowsnew_rowsと呼ぶリストの 2 つのリストがあります。

各行は、ちょうど 30 個のアイテムのリストです。各リストには非常に多くの (そして不明な) 行数が含まれる場合があります。2 つのリストには、異なる行数が含まれる場合があります。

[ [row1_item1, row1_item2... row1_item30], 
  [row2_item1, row2_item2... row2_item30],
  ....
  [rowN_item1, rowN_item2... rowN_item30] ]

ここで、N は大きくて可変です。

私がやりたいのは、old_rowsnew_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で高速なものを探すのが理想的です。

4

1 に答える 1

0
tuple(map(next, iterators)) 

に変更できます

tuple(i.next() for i in iterators) 

Py <= 2.6 の場合

于 2013-05-08T12:10:08.787 に答える