将元组列表中给定索引处的元素与另一个列表组合以形成对
Combining the elements at a given index in a list of tuples with another list to form pairs
我有两个列表:
x = [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
y = ['A', 'B', 'C']
我想获取第一个列表中每个元组的第一项,并将其与第二个列表组合,如下所示:
output = [(1, 'A'), (4, 'B'), (7, 'C')]
另外,在这两个列表中我都有几千个元素,所以我希望能尽快提供解决方案。
output = [(x[i][0],y[i]) for i in range(len(x))]
尝试:
x = [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
y = ['A', 'B', 'C']
output = [ (i[0], j) for i, j in zip(x, y) ]
print(output)
[(1, 'A'), (4, 'B'), (7, 'C')]
您可以使用 zip()
:
list(zip(list(zip(*x))[0], y))
输出:
[(1, 'A'), (4, 'B'), (7, 'C')]
您可以使用简单的列表理解 zip
:
output = [(a[0], b) for a, b in zip(x, y)]
您还可以使用 operator.itemgetter
:
预处理 x
from operator import itemgetter
output = list(zip(map(itemgetter(0), x), y))
输出:
[(1, 'A'), (4, 'B'), (7, 'C')]
我有两个列表:
x = [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
y = ['A', 'B', 'C']
我想获取第一个列表中每个元组的第一项,并将其与第二个列表组合,如下所示:
output = [(1, 'A'), (4, 'B'), (7, 'C')]
另外,在这两个列表中我都有几千个元素,所以我希望能尽快提供解决方案。
output = [(x[i][0],y[i]) for i in range(len(x))]
尝试:
x = [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
y = ['A', 'B', 'C']
output = [ (i[0], j) for i, j in zip(x, y) ]
print(output)
[(1, 'A'), (4, 'B'), (7, 'C')]
您可以使用 zip()
:
list(zip(list(zip(*x))[0], y))
输出:
[(1, 'A'), (4, 'B'), (7, 'C')]
您可以使用简单的列表理解 zip
:
output = [(a[0], b) for a, b in zip(x, y)]
您还可以使用 operator.itemgetter
:
x
from operator import itemgetter
output = list(zip(map(itemgetter(0), x), y))
输出:
[(1, 'A'), (4, 'B'), (7, 'C')]