将列表元素附加到元组列表

时间:2016-04-10 08:37:16

标签: python list tuples

a = [(1, "X"), (2, 'Y')]
b = [(1, 'Z'), (2, 'K')]
c = [t[1] for t in b]

d = []
i=0
for element in a:
    d.append(element + (c[i],))
    i += 1

print d

给我我想要的输出 [(1,'X','Z'),(2,'Y','K')]

然而,这似乎是一种不必要的长途跋涉。是否有更有效的方法(在代码方面)来实现相同的结果?

1 个答案:

答案 0 :(得分:0)

数据结构似乎有点不寻常,但这是获得结果的一种方法。

a = [(1, "X"), (2, 'Y')]
b = [(1, 'Z'), (2, 'K')]

a1, a2 = zip(*a)  # -> a1 = (1, 2); a2 = ('X', 'Y')
_, b2 = zip(*b)   # -> b2 = ('Z', 'K')

d = zip(a1, a2, b2)

a1a2b2只是必要的,因为ab本身相当繁琐。

如果ab中的元组始终从1开始按顺序编号,那么为什么要使用索引?

a = ('X', 'Y')
b = ('Z', 'K')

d = zip(a, b)  # -> [('X', 'Z'), ('Y', 'K')]

如果您需要索引,可以随时enumerate()

for i, e in enumerate(d, 1):
    print i, e
相关问题