同时迭代多个列表并捕获值的差异

Din*_*kar 6 python list python-2.7

考虑API返回四个列表作为输出.我们将输出视为

a = [1,2,3,4]
b = [1,2,3,4]
c = [1,2,4,3]
d = [1,2,3,5]
Run Code Online (Sandbox Code Playgroud)

现在,首先我们要比较这些列表是否相等.

仅当元素和索引匹配时,列表才相等.例如,从上面的列表,ab是相等的.但是ac不平等.

如果列表不相等,则输出预期为:此列表中此索引处的此元素与其他元素不同.

为了比较和获得两个列表的差异,我写了下面的代码.

for i in range(len(a)):
    if a[i] != c[i]:
        print "Expected value at ",i," is ",a[i]
        print "But got value ",c[i],"in second list"    
Run Code Online (Sandbox Code Playgroud)

现在的问题是如何实现以上四个列表中的所有这些?

Moi*_*dri 4

您可以zip同时迭代每个列表并比较每个索引处的值。在下面的示例中,我将列表的值a与其余列表进行比较。

a = [1,2,3,4]
b = [1,2,3,4]
c = [1,2,4,3]
d = [1,2,3,5]

for i, x in enumerate(zip(a, b, c, d)):
    print('--------- Index: {}'.format(i))
    base = x[0]
    for j, y in enumerate(x[1:], 2):
        if base!=y:
            print('{} not equal to {} : --> List {}'.format(base, y, j))
Run Code Online (Sandbox Code Playgroud)

打印:

--------- Index: 0
--------- Index: 1
--------- Index: 2
3 not equal to 4 : --> List 3
--------- Index: 3
4 not equal to 3 : --> List 3
4 not equal to 5 : --> List 4
Run Code Online (Sandbox Code Playgroud)