我有两个列表,我称之为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已经过时了。izip_longest的代码也不起作用,因为无法解释的next不是 2.4 友好的。
理想情况下,使用生成器寻找pythonic和快速的东西来处理可能非常大的列表。