[英]Finding the diff of two lists of strings
我试图在两个字符串列表之间找到一个差异(最长的公共子序列)。 我猜difflib
在这里可能有用,但是difflib.ndiff
用-
, +
等注释输出。例如
from difflib import ndiff
t1 = 'one 1\ntwo 2\nthree 3'.splitlines()
t2 = 'one 1\ntwo 29\nthree 3'.splitlines()
d = list(ndiff(t1, t2 )); print d;
[' one 1', '- two 2', '+ two 29', '? +\n', ' three 3']
标记和删除输出中的字母代码是否正确? 这是差异列表的正确Python方式吗?
如果您想要的只是第一个列表与第二个列表的差异,则可以将它们转换为set
并使用-
运算符来获取set差异。
范例-
>>> l1 = [1,2,3,4,5]
>>> l2 = [4,5,6,7,8]
>>> print(list(set(l1) - set(l2)))
[1, 2, 3]
按列表理解:
In [16]: l1 = ['a', 'b', 'c', 'd']
In [17]: l2 = ['a', 'x', 'y', 'c']
In [18]: l1_l2 = [ii for ii in l1 if ii not in l2]
In [19]: l1_l2
Out[19]: ['b', 'd']
In [20]: l2_l1 = [ii for ii in l2 if ii not in l1]
In [21]: l2_l1
Out[21]: ['x', 'y']
In [22]:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.