如何重新分配二维数组的内容?

时间:2019-06-26 17:05:05

标签: arrays clojure

有没有快速的转换方法

[["a" "b"] 
 ["c" "d"] 
 ["e" "f"]] 

[["a" "c" "e"] 
 ["b" "d" "f"]]

4 个答案:

答案 0 :(得分:4)

(use '[clojure.core.matrix])

(let [a [["a" "b"]
         ["c" "d"]
         ["e" "f"]]]
    (transpose a))

答案 1 :(得分:1)

这是将变体map(或mapv)与apply一起使用的方法:

(apply mapv vector [["a" "b"]
                    ["c" "d"]
                    ["e" "f"]])
=> [["a" "c" "e"] ["b" "d" "f"]]

答案 2 :(得分:0)

InkWell(
  onTap: () => print("image clicked"),
  child: CircleAvatar(
    backgroundImage: ExactAssetImage('assets/cat.jpg'),
    radius: 55,
  ),
),

如果要对2D“数组”(向量的向量)进行一般操作,请参见tupelo.arrays(例如,(def x [["a" "b"] ["c" "d"] ["e" "f"]] ) (def y [ (mapv first x) (mapv second x) ] ) ; or just `map` (println y) => [[a c e] [b d f]] 函数)。

答案 3 :(得分:-2)

我不认为有“快速”的方法,因为数组具有固定的长度,该长度在初始化时分配给某些内存。必须从当前数组中提取数据,然后必须初始化不同大小的数组并用提取的数据填充。在许多编程语言中都有各种各样的“(非)打包”函数,但是您可能需要在需要灵活的容器时考虑使用列表:可以在O(1)时间内完成链接列表中元素的添加或删除。