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

如何向二维列表的每个子列表末尾添加1?

问题:给二维列表每个子列表末尾添加元素

原始二维列表:

pts1_list = [
    [224.95256042, 321.64755249],
    [280.72879028, 296.15835571],
    [302.34194946, 364.82437134],
    [434.68283081, 402.86990356],
    [244.64321899, 308.50286865],
    [488.62979126, 216.26953125],
    [214.77470398, 430.75869751],
    [299.20846558, 312.07217407],
    [266.94125366, 119.36679077],
    [384.41549683, 442.05865479],
    [475.28448486, 254.28138733]]

期望结果:每个子列表末尾添加1,得到:

pts1_list = [
    [224.95256042, 321.64755249, 1],
    [280.72879028, 296.15835571, 1],
    [302.34194946, 364.82437134, 1],
    [434.68283081, 402.86990356, 1],
    [244.64321899, 308.50286865, 1],
    [488.62979126, 216.26953125, 1],
    [214.77470398, 430.75869751, 1],
    [299.20846558, 312.07217407, 1],
    [266.94125366, 119.36679077, 1],
    [384.41549683, 442.05865479, 1],
    [475.28448486, 254.28138733, 1]]

尝试的代码:

for i in range(len(pts1)):
    points1_list = [pts1[i]]
    points1_list = np.append(points1_list,1)
    
print(points1_list)
print(pts1_list)

遇到的问题:print(points1_list)只输出最后一个添加了1的子列表,无法得到完整的新列表。


错误原因

循环中每次都重新给points1_list赋值,覆盖了之前的处理结果,因此循环结束后仅保留最后一次循环的元素。


解决方案

方案1:原生Python列表操作

初始化空列表,遍历原列表的每个子列表,复制并添加1后追加到新列表:

points1_list = []
for sublist in pts1_list:
    # 复制子列表避免修改原数据,添加1后加入新列表
    new_sublist = sublist.copy()
    new_sublist.append(1)
    points1_list.append(new_sublist)

print(points1_list)

方案2:列表推导式(简洁高效)

用一行代码完成转换,可读性和执行效率都较好:

points1_list = [sublist + [1] for sublist in pts1_list]

print(points1_list)

方案3:使用numpy处理(适合后续数组操作)

如果需要用numpy数组进行后续计算,可直接转换为数组后添加列,再转回列表:

import numpy as np

arr = np.array(pts1_list)
# 拼接全1的列
new_arr = np.hstack((arr, np.ones((arr.shape[0], 1))))
points1_list = new_arr.tolist()

print(points1_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:10:52