You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Clojure 如何获取序列的第i个元素

Clojure 按索引取coef序列元素的实现方案

推荐写法(稳定可靠)

Clojure的关键字可直接作为函数从Map中提取对应值,搭配内置的nth函数即可实现按0基索引取序列元素:

;; 示例变量定义
(def p {:variable "x", :coef '(2 5 7 13)})

;; 取coef第i位元素的通用实现
(nth (:coef p) i)

测试效果:

  • i=0时:(nth (:coef p) 0) 输出 2
  • i=3时:(nth (:coef p) 3) 输出 13

适配你现有写法的修改方案

如果你要沿用当前(last (last p))的逻辑访问coef序列,仅需嵌套调用nth即可:

(nth (last (last p)) i)

注意:该写法不推荐用于生产代码。Clojure默认的哈希Map是无序结构,通过last取键值对的逻辑没有稳定性,一旦Map结构调整、新增键值对就会失效,优先用关键字直接访问Map的值更稳妥。


遍历索引的写法优化

你现有的遍历索引的代码可以用map-indexed进一步简化,可同时拿到索引和对应的元素值,无需手动生成索引区间:

;; 输出所有coef的[索引, 值]对
(map-indexed (fn [idx val] [idx val]) (:coef p))
;; 执行结果 => ([0 2] [1 5] [2 7] [3 13])

内容的提问来源于stack exchange,提问作者James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:45:01