如何將兩個給定矢量混合到一個新的矢量,該矢量以交替順序保存它們的值。混合兩個矢量:[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