使用其他列表附加到列表中的元组

时间:2016-01-17 17:22:20

标签: python list python-2.7 tuples

例如:

a = [('x',4),('y',1),('z',5)]
b = [6,2,3]
c = []

输出

c = [('x',4,6),('y',1,2),('z',5,3)]

我试过了:

for i in b:
    for data in a: 
        x,y = data
        c.append((x,y,i))

但我没有得到正确的结果。我得到了这个:

[('x', 4, 6), ('y', 1, 6), ('z', 5, 6), ('x', 4, 2), ('y', 1, 2), ('z', 5, 2), ('x', 4, 3), ('y', 1, 3), ('z', 5, 3)]

1 个答案:

答案 0 :(得分:1)

使用zip() functionab压缩在一起,并使用list comprehension生成新元组:

c = [a + (b,) for a, b in zip(a, b)]

演示:

>>> a = [('x',4),('y',1),('z',5)]
>>> b = [6,2,3]
>>> [a + (b,) for a, b in zip(a, b)]
[('x', 4, 6), ('y', 1, 2), ('z', 5, 3)]

您的代码创建了一个产品;对于b中的每个单独元素,您添加了所有a;这意味着您添加了所有预期输出 3次,而不只是一次。