2016-02-09 68 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] 
相關問題