clojure - 如何在clojure中查找向量是否具有连续元素
问题描述
我是 clojure 的新手,我正在尝试查找 clojure 中的向量是否具有连续元素:在 python 中,使用 numpy 很简单
(np.diff(np.sort(np.array(numbers))))
但我在寻找类似方法时迷失了方向:我的策略是
- 用自身减去一个向量
- 使它成为一个集合,看看它是否包含第一个元素为 1 并且集合的长度为 1
例如
(def x `(5 7 3 6 4))
输出将是 (1 1 1 1)
我很困惑如何解决这个问题。
解决方案
尝试这样的事情:
(defn diff [vals]
(map - (next vals) vals))
这将返回每对连续元素相等的差异列表。它之所以有效,是因为next
只需将值序列偏移一个元素。
示例用法:
(diff [1 2 2 3])
=> (1 0 1)
要测试是否存在连续数字,您只需检查1
此列表中是否存在该值。
推荐阅读
- mysql - MySQL 到 MariaDB - INSERT INTO with WHERE NOT EXIST
- java - Java 中是否有替代 TimeZone.getTimeZone() 的方法?
- c# - EF Core - 为具有 id = 0 的外键的实体返回 null
- amazon-web-services - 第三方上传的对象受 IP 范围限制的 S3 公共读取访问权限
- javascript - 需要访问 Web Worker 中的浏览器本地存储
- python - 使用 Python 从具有空白字段的文件中删除行
- hive - HIVE外部表中的换行符
- c++ - 包含在 std::regex 搜索中,使用 std::regex_token_iterator 从 std::sub_match 中排除
- javascript - 如何在javascript中将长或字符串转换为日期格式(如HH:mm:ss)?
- jhipster - JHipster 应用程序启动时出错