Python如何按对应位置合并两个列表得到指定结构的I7列表
问题原因
Python列表的+运算符仅执行一级元素的首尾拼接,会将两个列表的所有一级元素按顺序直接放入新列表,不会按索引对应合并子列表。此外Velprof_list的每个元素都是包裹了目标数值的单元素列表,直接拼接会将整个子列表作为元素加入,不符合追加单个数值的需求。
正确实现代码
使用zip()配对两个列表的同位置元素,通过列表推导式逐行拼接即可得到目标结果:
Velprof_list=[[1.12852034], [0.59581739], [1.69459738], [0.64335001]] I6=[[(0.5, -0.5), (1.0, 0.0)], [(0.5, -0.5), (0.0, -1.0)], [(1.5, -0.5), (0.0, -1.0)], [(0.5, -1.5), (1.0, 0.0)]] I7 = [i6_row + [vel_row[0]] for i6_row, vel_row in zip(I6, Velprof_list)] print(I7)
代码说明
zip(I6, Velprof_list)会按索引顺序依次返回两个列表同位置的元素对,不会打乱原有顺序- 每次取出
Velprof_list对应子列表的第一个元素(即需要追加的浮点数),和I6对应行的子列表拼接,组成I7的子列表 - 该写法会生成全新的列表,不会修改原始的
I6和Velprof_list数据
运行输出
执行代码后得到的结果和预期完全一致:
[[(0.5, -0.5), (1.0, 0.0), 1.12852034], [(0.5, -0.5), (0.0, -1.0), 0.59581739], [(1.5, -0.5), (0.0, -1.0), 1.69459738], [(0.5, -1.5), (1.0, 0.0), 0.64335001]]
内容的提问来源于stack exchange,提问作者Wiz123
相关产品推荐
相关产品推荐

