【发布时间】:2021-11-13 13:26:30
【问题描述】:
我知道如何使用函数 last 获取最后一个元素,但是是否可以获取序列的倒数第二个元素?
(defn last
[args]
(last args))
(last [1 2 3 4]) ;;--> 4 but i want it to return 3
【问题讨论】:
我知道如何使用函数 last 获取最后一个元素,但是是否可以获取序列的倒数第二个元素?
(defn last
[args]
(last args))
(last [1 2 3 4]) ;;--> 4 but i want it to return 3
【问题讨论】:
使用reverse、take-last、butlast 或nth(这个似乎是最快的):
(defn second-to-last1 [s]
(second (reverse s)))
(second-to-last1 (range 100))
=> 98
(defn second-to-last2 [s]
(first (take-last 2 s)))
(second-to-last2 (range 100))
=> 98
(defn second-to-last3 [s]
(last (butlast s)))
(second-to-last3 (range 100))
=> 98
(defn second-to-last4 [s]
(nth s (- (count s) 2) nil))
(second-to-last4 (range 100))
=> 98
【讨论】:
(peek (pop [1 2 3 4 5 6]))