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
相关产品推荐
相关产品推荐

