Python 在两个列表中查找更改的行或新行
我有两个列表,我称之为旧行和新行 每一行正好是30个项目的列表。每个列表中可能有大量(未知)行。这两个列表可能包含不同数量的行Python 在两个列表中查找更改的行或新行,python,list,search,iteration,python-2.4,Python,List,Search,Iteration,Python 2.4,我有两个列表,我称之为旧行和新行 每一行正好是30个项目的列表。每个列表中可能有大量(未知)行。这两个列表可能包含不同数量的行 [ [row1_item1, row1_item2... row1_item30], [row2_item1, row2_item2... row2_item30], .... [rowN_item1, rowN_item2... rowN_item30] ] 其中N大且可变 我想做的是比较旧行和新行,并创建一个“显著差异”列表-我只对行之间的大约10个
[ [row1_item1, row1_item2... row1_item30],
[row2_item1, row2_item2... row2_item30],
....
[rowN_item1, rowN_item2... rowN_item30] ]
其中N大且可变
我想做的是比较旧行和新行,并创建一个“显著差异”列表-我只对行之间的大约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))
令人恼火的是,这需要在Python2.4中工作,因此izip_longest已经过时。此外,由于无法解释的下一个不是2.4友好型,因此无法工作
理想的情况是寻找一些pythonic和快速使用生成器来处理潜在的非常大的列表
tuple(map(next, iterators))
可以改为
tuple(i.next() for i in iterators)
对于Py
tuple(map(next,iterators))
可以更改为tuple(i.next()表示iterators中的i)
对于Py,感谢您的第一行解决了问题。methodcaller显然是在2.6中引入的。哦,好吧,我会把它作为一个答案提交给你,如果它有效的话,你可以接受它。