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

如何按指定宽度将Array转换为二维Array?求优化/内置函数实现

如何将数组按指定宽度分组(优化方案/内置函数实现)

针对把数组 [1,2,3,4,5,6,7] 按宽度3转换为 [[1,2,3],[4,5,6],[7]] 的需求,下面是几种基于内置函数的高效实现方案,比手动写循环更简洁且性能优异:

Python 实现

列表推导式(推荐,简洁高效)

直接用Python内置的切片语法,一行代码生成结果,完全依赖语言原生特性,可读性和性能拉满:

arr = [1,2,3,4,5,6,7]
width = 3
result = [arr[i:i+width] for i in range(0, len(arr), width)]
# 输出:[[1, 2, 3], [4, 5, 6], [7]]

切片操作是Python底层优化过的,时间复杂度O(n),不需要额外依赖,处理常规数组足够好用。

迭代器方案(适合超大型数组)

如果数组规模极大,用itertools.islice生成迭代器逐批取元素,避免一次性占用大量内存:

from itertools import islice

arr = [1,2,3,4,5,6,7]
width = 3
arr_iter = iter(arr)
result = list(iter(lambda: list(islice(arr_iter, width)), []))
# 输出同上

这种方式不会创建完整的中间数组,内存占用更低,适合处理大数据场景。

JavaScript 实现

切片+循环(直观易懂)

用JS数组内置的slice方法配合循环,逻辑清晰,不会修改原数组:

const arr = [1,2,3,4,5,6,7];
const width = 3;
const result = [];
for (let i = 0; i < arr.length; i += width) {
  result.push(arr.slice(i, i + width));
}
// 输出:[[1,2,3],[4,5,6],[7]]

reduce 函数式实现(一行风格)

利用JS内置的reduce高阶函数,用函数式编程的方式完成分组:

const arr = [1,2,3,4,5,6,7];
const width = 3;
const result = arr.reduce((groups, item, index) => {
  const groupIndex = Math.floor(index / width);
  groups[groupIndex] = [...(groups[groupIndex] || []), item];
  return groups;
}, []);
// 输出同上

这些方案都避免了手动写复杂的计数、拼接逻辑,直接复用语言内置的高效方法,既减少了代码量,也降低了出错概率。

内容的提问来源于stack exchange,提问作者javapedia.net

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:38:17