2016-02-09 231 views
2

如何将两个给定矢量混合到一个新的矢量,该矢量以交替顺序保存它们的值。混合两个矢量:[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])) 

但也许有一个更简单的方法。

+0

,有一个'mapcat'功能,避免平坦化:'(会员名:mapcat矢量[:A1:A2] [:B1:B2])'。但可以肯定的是,'interleave'绝对是更好的 – leetwinski

回答

8

您可以使用interleave

(interleave [:a :a] [:b :b]) 
+0

真棒........ –

1

另一种选择:

(apply into (map vector [:a1 :a2] [:b1 :b2])) 

interleave是走不过的方式。

1

可以使用解构:顺便说

((fn [[a1 a2] [b1 b2]] [a1 b1 a2 b2]) [1 2] [3 4]) 
;[1 3 2 4] 
相关问题