2

我有两个列表,我称之为old_rowsnew_rows

每行是一个正好包含 30 个项目的列表。每个列表中可能有非常多(且未知)的行数。这两个列表可能包含不同数量的行。

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

其中 N 很大且可变。

我想做的是比较old_rowsnew_rows并创建一个“显着差异”列表 - 我只对比较行之间的大约 10 个项目感兴趣。我已经有一个函数,它只比较那些项目的两行。

所以我尝试了这个:

   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已经过时了。izip_longest的代码也不起作用,因为无法解释的next不是 2.4 友好的。

理想情况下,使用生成器寻找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 回答