登录
首页 >  Golang >  Go问答

按列连接二维数组

来源:stackoverflow

时间:2024-04-18 11:39:36 397浏览 收藏

今天golang学习网给大家带来了《按列连接二维数组》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~

问题内容

我在 golang 上有一个二维数组,类似于

array which contains [1,2,3,4]
                     [2,3,4,5]
                     [3,4,5,6]

我想加入数组列,即结果应该是

1,2,3
2,3,4
3,4,5
4,5,6

我的方法是创建 4 个数组并执行以下操作:

a := []int{}


for _, row := range array {
append (a,array[1])
append (b,array[2])
append (c,array[2])
append (d,array[2])


}

然后像这样加入这些数组

fmt.Println(strings.Join(a[:], ","))
fmt.Println(strings.Join(b[:], ","))
fmt.Println(strings.Join(c[:], ","))
fmt.Println(strings.Join(d[:], ","))

我的问题是否有一个选项可以按列而不是按行访问数组,或者是否有更有用的方法来执行此操作?


解决方案


您可以使用另一个二维数组,而不是实例化多个数组。

这是实现的快速传递(它可以使用更多错误检查,例如假设输入中的所有内部数组的长度相同):

package main

import (
    "fmt"
)

func transpose(input [][]int) [][]int {
    result := make([][]int, len(input[0]))
    for _, row := range(input) {
        for j, value := range(row) {
            result[j] = append(result[j], value)
        }
    }
    return result
}

func main() {
    input := [][]int{{1,2,3,4}, {2,3,4,5}, {3,4,5,6}}
    result := transpose(input)
    
    fmt.println(input)
    fmt.println(result)
}

输出:

[[1 2 3 4] [2 3 4 5] [3 4 5 6]]
[[1 2 3] [2 3 4] [3 4 5] [4 5 6]]

Go Playground

将列表列表展平为单个列表。使用 itemgetter 将列表分割成间隔并组装成单个列表。

from operator import itemgetter
data=[[1,2,3,4],[2,3,4,5], [3,4,5,6]]
data = [item for sublist in data for item in sublist]

index=[slice(0,4),slice(4,8),slice(8,13)]
result=[]
for idx_slice in index:
    f = itemgetter(idx_slice)
    col1=f(data)
    result.append(col1)

print(result)

输出:

[[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6]]

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>