vector - 如何从向量的向量中打印第 n 个索引
问题描述
我有一个作业问题,需要我从向量向量中打印(在向量中)指定的第 n 个索引。例如,如果我输入[1 2 3 4] [5 6 7 8] [9 10 11 12]
并输入指定第 n 个索引 1 的函数,我的结果必须是[2 6 10]
.
很迷茫,不擅长Clojure,只是一个Java/Python的人。
我已经尝试过使用接受向量和变量的函数作为第 n 个。但它返回整个向量和为 x 输入的值。
(defn column [vector x]
(cond
(empty? vector)
nil
:else
(column (nth vector x))))
如果我输入:
user ==> column vector 0
结果是这样的:
[1 2 3 4] [5 6 7 8] [9 10 11 12]
0
代替:
[1 5 9]
解决方案
解决此问题的惯用 clojure 方法是使用 map
(def v [[1 2 3 4] [5 6 7 8] [9 10 11 12]])
(defn column [coll pos]
(map #(nth % pos) coll))
该nth
函数给出向量中的第 n 个元素。map 函数将遍历每个内部向量并nth
使用给定的列值调用它。
结果将是来自所需列的一系列值。
推荐阅读
- javascript - 如何使用 c# 在 Selenium 中检查开关切换的状态
- javascript - 如何在同一 HTML 页面的每个新打开的选项卡或窗口中启动 JavaScript 函数?
- powershell - Powershell“特殊”开关参数
- python - 在具有重复值的 Python“列表”中查找“n”个最大元素
- c# - 在运行时决定自定义属性的值
- ios - iOS 应用程序崩溃与 UICheckBox,drawLayer:inContext
- reactjs - 反应中的钩子没有正确更新我的状态
- facebook - Facebook Graph API 是否可以从提要中检索广告?
- flutter - 按 Tab 转到下一个 TextField 会在该 TextField 上添加 /t
- java - 从另一个构造函数调用构造函数 init,其参数中包含共享对象