我有两个列表,我称之为 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的东西以应对可能非常大的列表。
答案 0 :(得分:0)
tuple(map(next, iterators))
可以更改为
tuple(i.next() for i in iterators)
for Py< = 2.6