在两个列表列表中查找已更改的行或新行

时间:2013-05-08 11:19:33

标签: python list search iteration python-2.4

我有两个列表,我称之为 old_rows new_rows

每一行都是30个项目的列表。每个列表中可能存在非常大(和未知)的行数。这两个列表可能包含不同数量的行。

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

其中N很大且可变。

我想要做的是比较 old_rows new_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 已经完成了。 code for izip_longest也不起作用,因为无法解释的下一个不是2.4友好的。

理想情况下使用生成器来寻找pythonic和fast的东西以应对可能非常大的列表。

1 个答案:

答案 0 :(得分:0)

tuple(map(next, iterators)) 

可以更改为

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

for Py< = 2.6