Pythonic方式比较两个列表并打印出差异

ran*_*ght 16 python comparison

我有两个保证长度相同的列表.我想比较列表中的相应值(第一项除外)并打印出不匹配的值.我这样做是这样的

i = len(list1)
if i == 1:
    print 'Nothing to compare'
else:
    for i in range(i):
        if not (i == 0):
            if list1[i] != list2[i]:
                print list1[i]
                print list2[i]
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?(Python 2.x)

Miz*_*zor 21

list1=[1,2,3,4]
list2=[1,5,3,4]
print [(i,j) for i,j in zip(list1,list2) if i!=j]
Run Code Online (Sandbox Code Playgroud)

输出:

[(2, 5)]
Run Code Online (Sandbox Code Playgroud)

编辑:轻松扩展以跳过n个第一项(相同输出):

list1=[1,2,3,4]
list2=[2,5,3,4]
print [(i,j) for i,j in zip(list1,list2)[1:] if i!=j]
Run Code Online (Sandbox Code Playgroud)


Rya*_*cox 5

没有人提到过滤器:

a = [1, 2, 3]
b = [42, 3, 4]

aToCompare = a[1:]
bToCompare = b[1:]

c = filter( lambda x: (not(x in aToCompare)), bToCompare)
print c
Run Code Online (Sandbox Code Playgroud)