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

如何在J语言中拆解长度各异的装箱列表构成的列表?

合并长度各异的装箱列表并避免末尾零

问题描述

现有一组长度各异的装箱列表,格式如下:

┌──────────────┬───────────┬─────┬───┐
│0 2 3 4 7 9 11│9 7 4 3 2 1│1 2 3│3 1│
└──────────────┴───────────┴─────┴───┘

需要合并为单个无额外末尾零的列表:

0 2 3 4 7 9 11 9 7 4 3 2 1 1 2 3 3 1

但合并操作时总会在末尾出现填充的零,需解决该问题。

原因分析

末尾出现零的核心原因是:装箱列表通常以固定长度数组存储,短列表会在末尾补零填充,合并时误将这些填充零当作有效元素加入。

解决方案

核心思路是提取每个子列表的有效元素部分(剔除末尾填充的零),再拼接所有有效部分。以下以Python为例实现:

示例代码

假设原始装箱数据为固定长度数组(短列表补零):

# 模拟装箱后的固定长度数组
boxed_lists = [
    [0, 2, 3, 4, 7, 9, 11],
    [9, 7, 4, 3, 2, 1, 0],
    [1, 2, 3, 0, 0, 0, 0],
    [3, 1, 0, 0, 0, 0, 0]
]

def extract_valid_elements(lst):
    # 从后往前定位第一个非零元素,截取有效部分
    for idx in reversed(range(len(lst))):
        if lst[idx] != 0:
            return lst[:idx+1]
    return []  # 处理全零的极端情况

# 合并所有有效子列表
merged_list = []
for sub_list in boxed_lists:
    merged_list.extend(extract_valid_elements(sub_list))

# 输出目标格式结果
print(' '.join(map(str, merged_list)))

代码说明

  1. extract_valid_elements 函数:通过反向遍历找到子列表中最后一个非零元素的位置,截取该位置之前的所有元素,确保只保留原始有效数据,剔除末尾填充的零。
  2. 遍历所有装箱子列表,将每个子列表的有效部分依次加入合并列表。
  3. 最终输出的结果即为无填充零的目标列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:02:35