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

如何将首项为名称的数组行拆分为两列交叉表?

数组行转两列交叉表的两种场景解决方案

嘿,我来帮你搞定这两种数组拆分成两列交叉表的需求!下面分场景给你具体的实现思路和示例代码:

场景1:通用数组行拆分为array_name和item列

这种场景里,你需要先给每个数组打上专属标识(比如数组名称),然后把数组里的每个元素都和这个标识配对。拿Python举个实际例子:

假设你的输入是带名称的数组集合:

# 键是数组名,值是数组元素
arrays = {
    "Array1": ["S1", "S2", "S4", "S6"],
    "Array2": ["P1", "J9"],
    "Array3": ["W0", "R7"]
}

转换代码很直观,就是两层循环配对:

cross_table = []
# 遍历每个数组
for array_name, items in arrays.items():
    # 把数组名和每个元素一一配对
    for item in items:
        cross_table.append((array_name, item))

# 打印结果
for pair in cross_table:
    print(f"{pair[0]} {pair[1]}")

运行后就会输出:

Array1 S1
Array1 S2
Array1 S4
Array1 S6
Array2 P1
Array2 J9
Array3 W0
Array3 R7

场景2:每行首项为名称、其余为元素的数组行拆分

这就是你给出示例的场景啦——每行开头是名称,后面跟着一堆元素,要把名称和每个元素分别配对。还是用Python来实现,贴合你的输入示例:

先模拟输入的每行内容:

input_lines = [
    "A S1 S2 S4 S6",
    "B P1 J9",
    "C W0 R7"
]

转换代码的思路是先拆分每行,取出首项当名称,剩下的逐个配对:

cross_table = []
for line in input_lines:
    # 把每行按空格拆分成列表
    parts = line.split()
    if not parts:
        continue
    # 首项是名称,剩下的是元素
    name = parts[0]
    items = parts[1:]
    # 逐个配对
    for item in items:
        cross_table.append((name, item))

# 按你想要的格式输出
print("、".join([f"{pair[0]} {pair[1]}" for pair in cross_table]))

运行后直接得到你期望的结果:

A S1、A S2、A S4、A S6、B P1、B J9、C W0、C R7

核心逻辑总结

其实不管哪种场景,核心都是先找到分组的标识(数组名/行首名称),再遍历分组里的每个元素,把标识和元素一一绑定。你要是用其他工具或语言,比如SQL、Excel、JavaScript,逻辑也是一样的,只是语法不同而已。

举个Excel的例子,要是数据在A1:A3单元格,想得到合并后的结果,可以在B1用这个公式:

=TEXTJOIN("、",TRUE,TOCOL(CHOOSECOLS(TEXTSPLIT(TEXTJOIN("|",TRUE,A1:A3),"|"," "),1)&" "&CHOOSECOLS(TEXTSPLIT(TEXTJOIN("|",TRUE,A1:A3),"|"," "),SEQUENCE(1,MAX(LEN(A1:A3)-LEN(SUBSTITUTE(A1:A3," ",""))))),2))

直接就能输出你要的格式哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 14:17:55