通常map-indexed函数将每个列表项映射到第一个索引为0的相应索引,第二个索引为1等。
是否可以让索引从另一个数字开始并从那里开始?
答案 0 :(得分:10)
最简单的方法就是记住您可以将多个序列传递给map
。
(map vector [:a :b :c] (iterate inc 100))
=> ([:a 100] [:b 101] [:c 102])
答案 1 :(得分:9)
您只需使用接收函数中的另一个函数包装索引
例如,如果我们想从1开始而不是零,我们只需使用inc
(map-indexed (fn [i v] (vector (inc i) v)) ["one" "two" "three"])
将返回
([1 "one"] [2 "two"] [3 "three"])
答案 2 :(得分:4)
map-indexed
不允许这样做。但是,编写自己的版本很容易让你这样做。
(defn map-indexed-from [n f coll]
(map f (range n Double/POSITIVE_INFINITY) coll))
使用示例:
user> (map-indexed-from 5 vector [:a :b :c])
([5 :a] [6 :b] [7 :c])