如何在没有键的情况下将地图转换为集合
How to convert a map into a collection without the keys
我有这样一张地图:
{1 [1 4 7], 2 [2 5 8], 0 [3 6 9]}
我想写一个函数 returns 这个:
[[1 4 7] [2 5 8] [3 6 9]]
附带说明一下,我通过以下方式获取地图:
(group-by #(mod % 3) [1 2 3 4 5 6 7 8 9])
如果有人有从这样的向量 [1 2 3 4 5 6 7 8 9]
到上面显示的第二个向量的捷径,请告诉我!
顺序重要吗? vals
是一张地图,returns 是一个值序列。但是没有为映射定义顺序,因此返回值序列的顺序是任意的。
> (vals {1 [1 4 7], 2 [2 5 8], 0 [3 6 9]})
([3 6 9] [1 4 7] [2 5 8])
已排序:
> (sort (vals {1 [1 4 7], 2 [2 5 8], 0 [3 6 9]}))
([1 4 7] [2 5 8] [3 6 9])
关于你的另一个问题:(partition 3 v)
创建一个矩阵,(apply map vector m)
是转置矩阵 m 的惯用语(它是如何工作的?练习 reader 或 google它)。所以:
> (apply map vector (partition 3 [1 2 3 4 5 6 7 8 9]))
([1 4 7] [2 5 8] [3 6 9])
当然还有其他方法。例如,解构:
> (let [{ a 0 b 1 c 2 } (group-by #(mod % 3) [1 2 3 4 5 6 7 8 9])] [b c a])
[[1 4 7] [2 5 8] [3 6 9]]
我有这样一张地图:
{1 [1 4 7], 2 [2 5 8], 0 [3 6 9]}
我想写一个函数 returns 这个:
[[1 4 7] [2 5 8] [3 6 9]]
附带说明一下,我通过以下方式获取地图:
(group-by #(mod % 3) [1 2 3 4 5 6 7 8 9])
如果有人有从这样的向量 [1 2 3 4 5 6 7 8 9]
到上面显示的第二个向量的捷径,请告诉我!
顺序重要吗? vals
是一张地图,returns 是一个值序列。但是没有为映射定义顺序,因此返回值序列的顺序是任意的。
> (vals {1 [1 4 7], 2 [2 5 8], 0 [3 6 9]})
([3 6 9] [1 4 7] [2 5 8])
已排序:
> (sort (vals {1 [1 4 7], 2 [2 5 8], 0 [3 6 9]}))
([1 4 7] [2 5 8] [3 6 9])
关于你的另一个问题:(partition 3 v)
创建一个矩阵,(apply map vector m)
是转置矩阵 m 的惯用语(它是如何工作的?练习 reader 或 google它)。所以:
> (apply map vector (partition 3 [1 2 3 4 5 6 7 8 9]))
([1 4 7] [2 5 8] [3 6 9])
当然还有其他方法。例如,解构:
> (let [{ a 0 b 1 c 2 } (group-by #(mod % 3) [1 2 3 4 5 6 7 8 9])] [b c a])
[[1 4 7] [2 5 8] [3 6 9]]