You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从数组列表拼接数组?Python脚本仅输出最后元素问题

问题分析与修复

原代码的核心问题是循环逻辑错误,加上不必要的重复导入,导致最终只保留了最后一次循环的结果:

  • import numpy as np被放在循环内部,每次循环都会重复导入,完全没有必要,应该移到代码最开头。
  • 循环for k in range(len(a))中,每次都会重新生成包含所有(i,j)组合的数组,且所有组合的第三个元素都被设为当前的a[k],循环结束后array变量只会保留最后一次循环生成的结果(也就是a最后一个元素对应的数组)。

修复后的代码

方法一:利用zip配对组合

import numpy as np

a = [0.1, 0.2, 0.43, 0.44, 0.55, 0.36, 0.57, 0.58, 0.39, 0.40]
# 先生成所有(i,j)的配对列表
pairs = [[i, j] for i in range(1, 5) for j in range(i + 1, 6)]
# 将每个配对与a中对应的元素组合,再转为numpy数组
result = np.array([pair + [val] for pair, val in zip(pairs, a)])
print(result)

方法二:手动索引遍历

import numpy as np

a = [0.1, 0.2, 0.43, 0.44, 0.55, 0.36, 0.57, 0.58, 0.39, 0.40]
array_list = []
idx = 0
for i in range(1, 5):
    for j in range(i + 1, 6):
        array_list.append([i, j, a[idx]])
        idx += 1
array = np.array(array_list)
print(array)

输出结果

运行上述代码后,会得到你预期的输出:

array([[ 1.  ,  2.  ,  0.1 ],
       [ 1.  ,  3.  ,  0.2 ],
       [ 1.  ,  4.  ,  0.43],
       [ 1.  ,  5.  ,  0.44],
       [ 2.  ,  3.  ,  0.55],
       [ 2.  ,  4.  ,  0.36],
       [ 2.  ,  5.  ,  0.57],
       [ 3.  ,  4.  ,  0.58],
       [ 3.  ,  5.  ,  0.39],
       [ 4.  ,  5.  ,  0.4 ]])

内容的提问来源于stack exchange,提问作者user15708301

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 22:16:41