a=[(1,2),(2,3),(3,5),(4,1)]
b=[(1,3),(2,3),(3,5),(4,3)]
我想根据它们的索引号比较列表中的每个元素,即第一个项目到第一个项目,第二个项目到第二个项目,依此类推......
如果匹配,什么也不做,它们不匹配,附加到新列表。
答案 0 :(得分:1)
香草:
>>> result = []
>>> for x, y in zip(a, b):
... if x != y:
... result.append(x)
... result.append(y)
...
>>> result
[(1, 2), (1, 3), (4, 1), (4, 3)]
乐趣:
>>> sum(([x,y] for x,y in zip(a, b) if x != y), [])
[(1, 2), (1, 3), (4, 1), (4, 3)]
您应该在这里学到的一般教训是,无论何时您想要逐个元素地比较迭代,请使用zip
内置函数。之后的一切都是完全直接的(在香草版中)。
答案 1 :(得分:0)
如果列表的长度与您提供的示例相同,并且您想要附加两个不匹配的元素,则可以使用:
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
输出:
[(1, 2), (1, 3), (4, 1), (4, 3)]
答案 2 :(得分:0)
以下是使用经典for
循环的解决方案。
l = []
for i in range(len(a)):
if a[i] != b[i]:
l.append(a[i])
l.append(b[i])
答案 3 :(得分:0)
使用简单的列表理解:
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]]