我有以下序列
(def a [1 2 3 4])
(def b [10 20 30 40])
(def c [100 200 300 400])
我想逐个元素地组合序列:
(... + a b c)
给我:
[111 222 333 444]
是否有可用的标准功能来做到这一点?或者,什么是一种好的惯用方式?
我有以下序列
(def a [1 2 3 4])
(def b [10 20 30 40])
(def c [100 200 300 400])
我想逐个元素地组合序列:
(... + a b c)
给我:
[111 222 333 444]
是否有可用的标准功能来做到这一点?或者,什么是一种好的惯用方式?
如果您使用 clojure-1.4.0 或更高版本,您可以使用mapv
:
user> (mapv + [1 2 3 4] [10 20 30 40] [100 200 300 400])
[111 222 333 444]
您正在寻找的功能是map
.
(map + [1 2 3 4] [10 20 30 40] [100 200 300 400])
;=> (111 222 333 444)
请注意,它map
返回一个惰性序列,而不是您的示例中显示的向量。into
但是您可以使用该函数将惰性序列倒入空向量中。
(into [] (map + [1 2 3 4] [10 20 30 40] [100 200 300 400]))
;=> [111 222 333 444]
此外,(为了完整性,正如另一个答案中所述)在 Clojure 1.4.0+ 中,您可以使用mapv
(具有与 相同的参数map
)以获得向量结果。