【问题标题】:How can i get the second to last element of a Sequence? Clojure如何获得序列的倒数第二个元素? Clojure
【发布时间】: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

【问题讨论】:

    标签: clojure sequence


    【解决方案1】:

    使用reversetake-lastbutlastnth(这个似乎是最快的):

    (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]))
    猜你喜欢
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多