如何将两个给定矢量混合到一个新的矢量,该矢量以交替顺序保存它们的值。混合两个矢量:[a a]和[b b] to [a b a b]
(f [a a] [b b]) ; > [a b a b]
这涉及到我的脑海:
(flatten (map vector [:a1 :a2] [:b1 :b2]))
但也许有一个更简单的方法。
如何将两个给定矢量混合到一个新的矢量,该矢量以交替顺序保存它们的值。混合两个矢量:[a a]和[b b] to [a b a b]
(f [a a] [b b]) ; > [a b a b]
这涉及到我的脑海:
(flatten (map vector [:a1 :a2] [:b1 :b2]))
但也许有一个更简单的方法。
您可以使用interleave
:
(interleave [:a :a] [:b :b])
真棒........ –
另一种选择:
(apply into (map vector [:a1 :a2] [:b1 :b2]))
interleave
是走不过的方式。
可以使用解构:顺便说
((fn [[a1 a2] [b1 b2]] [a1 b1 a2 b2]) [1 2] [3 4])
;[1 3 2 4]
,有一个'mapcat'功能,避免平坦化:'(会员名:mapcat矢量[:A1:A2] [:B1:B2])'。但可以肯定的是,'interleave'绝对是更好的 – leetwinski