在python列表中查找相同索引的不匹配项

时间:2014-09-26 23:23:00

标签: python list

我有以下列表

l1 = ['a','b','c','a']
l2 = ['a','d','c','c']

我想找出l2中与同一索引处的l1元素不匹配的元素。 例如:上面列表的输出将是[' d',' c']

因为l2应该有' b'在第二位。

我可以通过迭代列表并找到不匹配来做到这一点。

l3 = []
for i in range(len(l1)):
    if l1[i] != l2[i]: l3.append(l2[i])
print l3

有没有更好的方法来做到这一点。 感谢。

3 个答案:

答案 0 :(得分:3)

missing = [b for a,b in itertools.izip_longest(l1,l2,fillvalue=object()) if a != b]

更加pythonic ......但基本上是相同的东西

答案 1 :(得分:3)

Python列表理解,无需导入任何模块,如itertools。

l3 = [b for a,b in zip(l1,l2) if b != a]

每当你发现自己想要做一个for循环时,你可能会在每次迭代时附加一个以空列表开头的东西,想想使用列表理解。

答案 2 :(得分:-1)

如果您有相同的尺寸列表,则可以使用enumerate

l1 = ['a','b','c','a']
l2 = ['a','d','c','c']
print [ele for ind,ele in enumerate(l2) if ele != l1[ind]]
['d', 'c']