如何在Clojure中获取Sequence序列的倒数第二个元素
实现方案
你可以通过以下几种方式实现获取Clojure序列倒数第二个元素的需求,适配不同的使用场景:
- 方案1:反转序列后取第二个元素,适合短序列场景,写法最简洁
(second (reverse [1 2 3 4])) ;; 运行结果:3
- 方案2:先取序列最后2个元素再取第一个,适合长序列、惰性序列场景,性能更优
(first (take-last 2 [1 2 3 4])) ;; 运行结果:3
- 方案3:自定义封装函数,可灵活调整边界场景的处理逻辑
(defn penultimate [s] ;; 序列长度不足2时返回nil,可根据需求修改为抛出异常等其他逻辑 (when (>= (count s) 2) (nth s (- (count s) 2)))) ;; 调用测试 (penultimate [1 2 3 4]) ;; 运行结果:3
内容的提问来源于stack exchange,提问作者modar
相关产品推荐
相关产品推荐

