(def tmp = [ 1 2 3 9 4 8])
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建2对,然后为每对,从第一个数字中减去第二个数字.期望的结果:(1 6 4)
这是我在尝试的:
(map #(apply - %2 %1) (partition 2 tmp))
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
Art*_*ldt 10
分区会生成一系列序列,因此映射它们的函数需要预期两个项目的序列.有几种表达方式:
(def tmp [ 1 2 3 9 4 8])
user> (map #(- (second %) (first %)) (partition-all 2 tmp ))
(1 6 4)
user> (map #(apply - (reverse %)) (partition-all 2 tmp ))
(1 6 4)
user> (map (fn [[small large]] (- large small)) (partition-all 2 tmp ))
(1 6 4)
Run Code Online (Sandbox Code Playgroud)
使用apply的版本是不同的,因为它仍然可以在奇数长度列表上"工作":
user> (map #(apply - (reverse %)) (partition-all 2 [1 2 3 4 5 6 7] ))
(1 1 1 -7)
Run Code Online (Sandbox Code Playgroud)
其他人会因无效输入而崩溃,您可能更喜欢这种输入.
| 归档时间: |
|
| 查看次数: |
2137 次 |
| 最近记录: |