Python 将列表元素与元组元素合并
我有一个列表和两个元组,如下所示:Python 将列表元素与元组元素合并,python,python-3.x,list,numpy,tuples,Python,Python 3.x,List,Numpy,Tuples,我有一个列表和两个元组,如下所示: L1 = ['0.99999', '0.88888', '0.77777','0.66666','0.55555'] T1 = [('id_099', 'PND', '15.42'), ('id_088', 'PKZ', '16.04'), ('id_077', 'PZD', '16.73'), ('id_066', 'PNK', '18.19'), ('id_055', 'PNT', '10.62')] T2 = [('XX13', 'XY13'
L1 = ['0.99999', '0.88888', '0.77777','0.66666','0.55555']
T1 = [('id_099', 'PND', '15.42'),
('id_088', 'PKZ', '16.04'),
('id_077', 'PZD', '16.73'),
('id_066', 'PNK', '18.19'),
('id_055', 'PNT', '10.62')]
T2 = [('XX13', 'XY13'),
('XX43', 'XY26'),
('XX77', 'XY13'),
('XX19', 'XY03'),
('XX93', 'XY13')]
merged = [i+j for i,j in zip(T1,T2)]
我希望通过以下方式将每个元素数组合并为列表或NumPy数组
NEW =
('id_099', 'PND', '15.42','0.99999','XX13', 'XY13'),
('id_088', 'PKZ','16.04','0.88888','XX77', 'XY13'),
.
.
.
当只有元组时,很容易按如下方式合并它们:
L1 = ['0.99999', '0.88888', '0.77777','0.66666','0.55555']
T1 = [('id_099', 'PND', '15.42'),
('id_088', 'PKZ', '16.04'),
('id_077', 'PZD', '16.73'),
('id_066', 'PNK', '18.19'),
('id_055', 'PNT', '10.62')]
T2 = [('XX13', 'XY13'),
('XX43', 'XY26'),
('XX77', 'XY13'),
('XX19', 'XY03'),
('XX93', 'XY13')]
merged = [i+j for i,j in zip(T1,T2)]
但是,我找不到一种简单的方法将列表中的每个元素与元组合并,当我尝试将上述方法应用于列表时,它会抛出一个错误
TypeError:只能将元组(而不是“str”)连接到元组
你能给我指出正确的方向吗?使用现代(3.5+)Python,这并不难:
merged = [(*i, x, *j) for i, x, j in zip(T1, L1, T2)]
元组
s使用*
解包,而单个元素通常包含在元组
文本中,无需在元组
中显式包装L1
中的元素,也不执行多个连接以生成中间临时的元组。能否提供一个给出错误的列表示例?T1
和T2
中的值通过像你一样压缩[i+(j,)+k表示zip(T1,L1,T2)中的i,j,k]`-显式地将中间元素转换为元组来正确合并。哇,回答不错。在这里,我在玩弄np.concatentate
。这样更好,我甚至不打算发布我的想法。我不知道这是一件事。I+(x,)+j
的时间差不多。谢谢。是的,这就是我一直在寻找的答案。@hpaulj:它也会随着实现的不同而变化;较旧的设计(=3.9)使用的每项指令与listcomps使用的指令类似(LIST\u APPEND
用于单个项目,LIST\u EXTEND
用于未打包的iterables,以及在制作元组时从LIST
转换为元组的最终指令)。它不一定在所有情况下都更具性能,但它的扩展性更好(你投入的东西越多,避免的开销越大),而且更简单。