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

Google Apps Script中JavaScript二维数组提取子元素的替代方案

问题描述

给定如下二维数组:

[
['Cycling','Chess'],
['Cycling','Pilates'],
['Cycling','Elevate'],
['Cycling','Kundalini'],
['Cycling','Scrabble'],
['Cycling','Crossword'],
['Cycling','Darning'],
['Running','Ashtanga'],
['Running','Poker'],
['Running','Sudoku'],
['Running','Sewing'],
['Running','Jump'],
['Boxing','Mushin'],
['Boxing','Tai'],
['Boxing','Tae'],
['Boxing','1000'],
['Boxing','Transient'],
['Boxing','Walking'],
['Strength','Flow'],
['Strength','Tantric'],
['Strength','Quigong'],
['Strength','Active']
]

需要将其处理为仅保留每个子数组第二个元素的新二维数组,期望结果如下:

['Chess'],
['Pilates'],
['Elevate'],
['Kundalini'],
['Scrabble'],
['Crossword'],
['Darning'],
['Ashtanga'],
['Poker'],
['Sudoku'],
['Sewing'],
['Jump'],
['Mushin'],
['Tai'],
['Tae'],
['1000'],
['Transient'],
['Walking'],
['Flow'],
['Tantric'],
['Quigong'],
['Active']

由于原生split仅适用于一维数组,希望找到类似NumPy中hsplit函数的替代实现方法。

解决方案

1. Python原生列表推导式(最简实现)

无需依赖第三方库,直接遍历原数组提取目标元素并包装为单元素子数组:

original_arr = [
    ['Cycling','Chess'],
    ['Cycling','Pilates'],
    # 省略其余元素
    ['Strength','Active']
]

result = [[item[1]] for item in original_arr]

执行后result即为目标数组。

2. 函数式风格:map+匿名函数

如果偏好函数式编程写法,可使用map批量处理每个子数组:

result = list(map(lambda x: [x[1]], original_arr))

map会对原数组的每个子数组应用匿名函数,提取第二个元素并包装,最后转换为列表即可。

3. NumPy环境下的实现(类似hsplit思路)

如果原本就在用NumPy处理数组,可通过切片直接提取指定列并保留二维结构:

import numpy as np

original_np = np.array(original_arr)
# 提取第二列(索引为1),保持二维形状
result_np = original_np[:, 1:2]
# 转回Python列表格式
result = result_np.tolist()

这里的[:, 1:2]操作和hsplit的效果类似,直接拆分出目标列并维持二维结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 00:19:52