我有以下列表
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
有没有更好的方法来做到这一点。 感谢。
答案 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']