【发布时间】:2014-07-03 21:07:24
【问题描述】:
用n+1 和n 成员交错两个向量的最简单方法是什么?
(def a [:a :c :e])
(def b [:b :d])
(interleave a b ); truncates to shortest list
[:a :b :c :d]
;what I would like.
(interleave-until-nil a b)
[:a :b :c :d :e]
【问题讨论】:
-
在这种特定情况下,您可以这样做
(concat (interleave a b) [(last a)]) -
@zack 你会在向量上有不同的长度吗?您的示例显示了一个,但如果您想要通用的东西来处理任意长度的任意两个向量,请发表评论。
-
看看medley。它包含一个 interleave-all 函数,可以满足您的需求。
-
@FrankC。在我的场景中,我使用
partition-all来拆分序列,将函数应用于奇/偶值并重新组合序列。如果原始序列是偶数,我将有两个相同长度的向量。如果原始向量是奇数,则第一个序列将比第二个长一个成员。 -
感谢@sloth - 不错的小图书馆。
标签: clojure