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

Python中二维数组追加与CSV读取数据重组技术问询

解决二维数组拆分重组问题

嘿,我来帮你搞定这个数组重组的问题!你想要把原数组里每行的前两个元素先组成一批新行,再把每行里索引大于1的元素(也就是后两个)组成另一批新行,最后把这两批拼起来得到目标结构,对吧?

你的代码里的小坑

你原来的代码存在几个明显的问题:

  • c = b 不是创建新数组,只是给原数组b起了个新别名,修改c的同时会直接改动b,这可不是复制数组的正确方式;
  • c[4].append(1) 会直接抛出索引越界错误,因为原数组只有3行,最大索引是2,根本不存在索引为4的元素;
  • 循环逻辑没写完整,也没明确拆分每行并按要求重组。

正确的实现方法

方法一:分步遍历(清晰易懂)

这种写法逻辑一目了然,适合刚接触Python列表操作的场景:

b = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
result = []

# 先把每行的前两个元素组成新行加入结果
for row in b:
    result.append(row[:2])

# 再把每行中索引大于1的元素组成新行加入结果
for row in b:
    result.append(row[2:])

print(result)
# 输出:[[1, 2], [5, 6], [9, 10], [3, 4], [7, 8], [11, 12]]

方法二:列表推导式(简洁高效)

如果你喜欢更紧凑的写法,用列表推导式可以一行搞定:

b = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
result = [row[:2] for row in b] + [row[2:] for row in b]

print(result)
# 输出和上面完全一致

关键语法解释

  • row[:2]:Python的切片语法,取列表row中从开头到索引2(不包含)的元素,也就是每行的前两个元素;
  • row[2:]:取列表row中从索引2到末尾的所有元素,正好对应你要的“索引大于1的元素”;
  • 把两部分列表直接相加,就自动完成了“前半批行 + 后半批行”的拼接,完美得到你想要的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:04:27