如果我有两个序列
(let [v1 '(1 2 3 4)
v2 '(2 4 6 8)]
...)
是否有某种方法可以通过函数将它们组合成单个向量,例如:
(combine #(* % %2) [1 2 3 4] [2 4 6 8]) => [2 8 18 32]
“映射”函数将为每个“组合”序列采用一个参数,因此使用 3 个序列调用它需要一个 3 元函数。 如果任一序列用完元素,它应该停止或重复较短的序列,这并不重要。
最佳答案
您可以使用 map
函数(来自 clojure.core
)。
map
将函数作为其第一个参数,并将任意数量的序列作为其后续参数。它通过从每个输入序列中获取一个元素并应用该函数并将该元素集合作为参数来构造输出的每个元素,正如您所需要的那样。
所以你的例子将变成:
(map * [1 2 3 4] [2 4 6 8])
关于clojure - 是否有一些函数可以在一个函数上组合多个序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40921573/