Python 获取两个元组列表之间的差异

Python 获取两个元组列表之间的差异,python,Python,我想根据索引号比较列表中的每个元素,即第一项与第一项、第二项与第二项,依此类推 如果它们匹配,则不执行任何操作,如果它们不匹配,则附加到新列表。如果列表的长度与您提供的示例相同,并且您希望附加两个不匹配的元素,则可以使用: a=[(1,2),(2,3),(3,5),(4,1)] b=[(1,3),(2,3),(3,5),(4,3)] 输出: a=[(1,2),(2,3),(3,5),(4,1)] b=[(1,3),(2,3),(3,5),(4,3)] c = []

我想根据索引号比较列表中的每个元素,即第一项与第一项、第二项与第二项,依此类推


如果它们匹配,则不执行任何操作,如果它们不匹配,则附加到新列表。

如果列表的长度与您提供的示例相同,并且您希望附加两个不匹配的元素,则可以使用:

a=[(1,2),(2,3),(3,5),(4,1)]
b=[(1,3),(2,3),(3,5),(4,3)]
输出:

    a=[(1,2),(2,3),(3,5),(4,1)]
    b=[(1,3),(2,3),(3,5),(4,3)]
    c = []
    for i in xrange(len(a)):
        if a[i] != b[i]:
            c.append(a[i])
            c.append(b[i])
    print c

下面是一个使用经典
for
循环的解决方案

[(1, 2), (1, 3), (4, 1), (4, 3)]
香草的:

l = []
for i in range(len(a)):
    if a[i] != b[i]:
        l.append(a[i])
        l.append(b[i])
乐趣:


在这里,您应该学到的一般经验是,无论何时,只要您想要比较iterables元素,就使用
zip
builtin。之后的一切都是完全直接的(在普通版本中)。

使用简单的列表理解:

>>> sum(([x,y] for x,y in zip(a, b) if x != y), [])
[(1, 2), (1, 3), (4, 1), (4, 3)]

看起来你想让我们为你写些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只在海报已经试图自己解决问题时才提供帮助。演示这项工作的一个好方法是包括您迄今为止编写的代码、示例输入(如果有)、预期输出和实际获得的输出(控制台输出、回溯等)。你提供的细节越多,你可能得到的答案就越多。检查和。顺便问一下,列表中是否有元组是非常不相关的。将什么附加到新列表中,
a
中的元素,
b
中的元素,或者两者都附加到新列表中?使用
zip
会更干净:
[ai代表ai,bi在zip(a,b)中,如果ai!=bi]
>>> sum(([x,y] for x,y in zip(a, b) if x != y), [])
[(1, 2), (1, 3), (4, 1), (4, 3)]
a=[(1,2),(2,3),(3,5),(4,1)]
b=[(1,3),(2,3),(3,5),(4,3)]

new_list = [a[i] for i in range(len(a)) if a[i] != b[i]]