在 Clojure 中查找与谓词匹配的元素的索引?

2024-02-26

使用 Clojure,如何找到该向量中第一个具有正值的索引[-1 0 3 7 9]?

我知道你可以相当优雅地得到第一个结果first and filter:

(first (filter pos? [-1 0 99 100 101]))

这段代码返回值99。我想要的答案是索引2.


Using keep-indexed http://clojure.github.com/clojure/clojure.core-api.html#clojure.core/keep-indexed您可以获得满足谓词的索引序列:

(defn indices [pred coll]
   (keep-indexed #(when (pred %2) %1) coll))

通过这个简单的函数,您可以用表达式解决您的问题

user=> (first (indices pos? [-1 0 99 100 101]))
2

请注意,由于懒惰keep-indexed (and indices),不需要实现整个序列,因此不需要执行额外的计算。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Clojure 中查找与谓词匹配的元素的索引? 的相关文章

  • Clojure 性能:REPL 与 uberjar

    我想做一些实时图形渲染 并尝试对每帧每个像素进行多次计算 然后我很快注意到这非常慢并且从最基础开始 我能以多快的速度循环所有像素 我发现 dotimes 相当快 但是当我在 REPL 中执行此操作时 速度非常慢 user gt dotime
  • 在 Lisp 解释过程中,“读者”的任务是什么?

    我想知道 读者 在解释 编译 Lisp 程序期间的目的 或者更准确地说 是 读者 的任务 从我刚刚完成的问题前研究来看 在我看来 读者 特别是本例中的 Clojure 可以被视为 语法预处理器 它的主要职责是读取器宏和原始形式的扩展 所以
  • Clojure 和 scala 互操作

    我熟悉 scala 类 对象可以从 clojure 调用 因为 scala 编译为字节码 并且 clojure 对此很满意 然而 调用 clojure 函数和从 scala 导入命名空间是否一样轻松 我想将优秀的 lift 框架和 cloj
  • 如何将 Clojure memfn 与 Java 构造函数一起使用?

    我想使用 Java 构造函数作为一流的 Clojure 函数 我的用例是将字符串序列转换为具有单个字符串构造函数的 Java 对象序列 简单的Java对象 public class Foo public Foo String aString
  • Clojure:在 let 绑定中展开 var

    我想在let不同功能的形式 比方说 def common assign x 10 y 20 一种方法是用eval eval defn foo let common assign hello world balala 问题是现在你必须引用所有
  • 什么是谓词调度

    我最近看到很多关于 Clojure 中谓词分派的讨论 想知道这件事是否有什么意义 换句话说 什么是谓词分派以及它与泛型函数 OOP 多态性和模式有何不同 谢谢 谓词分派包含泛型函数 OOP 多态性 模式匹配等 一个好的概述是谓词调度 统一的
  • Scala 相当于 F# 中的 |> 或 Clojure 中的 ->>

    在 Scala 中 当我有这个表达式时 f1 f2 f3 p 有没有一种方法可以让我使用类似的东西 F p gt f3 gt f2 gt f1 还是 Clojure gt gt p f3 f2 f1 Scala 中没有相当于 F 的管道运算
  • Clojure:在特定命名空间中启动 repl

    我安装了 boot clj 并且希望能够在外部编辑器中编辑 clj 文件 并单独运行一个命令行 REPL 我可以从中调用我在 clj 文件中更改的函数 不需要特殊的重新加载命令 另一件事是我不想手动键入命令来包含命名空间 我只想运行一个将我
  • Clojure gen-class 返回自己的类

    我现在正在使用 Clojure 创建一个类对象 它有一个返回对象本身的方法 用Java编写的 我想要制作的对象是这样的 class Point public double x public double y public Point dou
  • pmap 和线程数

    user gt Runtime getRuntime availableProcessors 2 并评估这个例子 http clojuredocs org clojure core clojure core pmap example 684
  • 如何使用 core.async 在 Clojure 中写入日志文件?

    我想使用 core async 作为写入文件的记录器 因此我创建了一个 test txt 文件 将其粘贴在我的资源文件夹中并编写了以下代码 use clojure java io use clojure core async def pri
  • 面向 Clojure 用户的 Java

    我一直在断断续续地使用 Lisp 并且正在赶上 clojure clojure的好处是我可以自然地使用所有的java函数 而clojure的坏处也是我必须自然地了解java函数 例如 我不得不花一些时间 谷歌搜索 来查找 Java 中的平方
  • 为什么这个 Clojure 减速器 r/fold 没有提供任何性能优势?

    我想知道为什么下面的代码在 r fold 的情况下没有提供加速 我对减速器有什么误解吗 我在一个相当慢的 尽管有 2 个核心 Ubuntu 12 04 开发盒上运行它 通过 emacs 和 lein 运行 每个都有相同的结果 require
  • 为什么leiningen启动时那么慢?

    我在用着lein repl在控制台中执行 clojure repl 当我运行它时 需要超过15秒 当我跑步时java cp clojure 1 6 0 jar clojure main 只需几秒钟 Why is lein repl太慢了 有
  • Clojure:生成所有键盘可输入字符

    Context 我想生成可以通过以下方式生成的所有字符 打开记事本 按键盘上的单个键 按住 Shift 按键盘上的单个键 我目前拥有的 concat range int a int z range int A int Z range int
  • Clojure 中 with-local-vars 和 with-bounds 之间的区别

    Clojure 的文档with local vars http clojuredocs org clojure core clojure core with local vars and with bindings http clojure
  • 将向量作为绑定传递给 for 宏时出现问题

    我有任意数量的列表 我想使用 for 宏来处理它们 我想创建一个传递向量作为绑定的函数 因为列表的数量各不相同 如果我对绑定进行硬编码 它会按我的预期工作 gt def list1 pink green gt def list2 dog c
  • 获取调用表单的名称空间

    我想要一个宏this ns这样它就会返回调用它的位置的名称空间 例如 如果我有这段代码 ns nstest main require nstest core as nstest defn ns str x gt x getName name
  • Leiningen 在构建可用的 uberjar 时遇到问题

    我们正在尝试与 Leiningen 一起构建我们的 Clojure 项目 我们通过执行以下操作成功创建了 uberjar 前提条件 project clj 文件列出了依赖项 main my project core在项目 clj中 core
  • 如何在 Clojure 中链接 Promise

    在 Scala 中 您可以使用map and flatMap在未来的成功结果上运行函数 val x Future Int val y Future String x map toString 有没有比以下更好的 Clojure 类似物 de

随机推荐

  • 将值添加到空 Swift 数组

    我不知道如何在 Swift 中向空数组添加值 我尝试以两种不同的方式从空数组开始 var emptyArray Int emptyArray Int and var emptyArray 顺便问一下 这两种创建空数组的方式有什么区别 我尝试
  • 如何使用appledoc生成类似Apple的文档

    我正在阅读如何生成类似 Apple 的 HTML 文档的文章 here http gentlebytes com appledoc docs examples basic 我的问题是命令行的用途 我们如何将命令行和 appledoc xco
  • Outlook JS Addin - 撰写表单 - 如何检查事件/消息是否已保存?

    Outlook 加载项 office js 的撰写表单中是否有一种方法可以检查表单后面的对象 在我的例子中是日历事件 是否已保存 检查物品ID 如果未定义 则消息未存储 如果存在 则消息来自草稿 请参阅Office context mail
  • Process.GetProcesses 返回所有登录用户的进程?

    在允许多个用户同时登录一台机器的windows环境中 当我们调用Process GetProcesses 它是否返回进行此调用的登录用户的进程 还是返回所有登录用户的进程 我查看了 MSDN 页面 但找不到此信息 该函数返回本地计算机上运行
  • socket.error[Errno 99] 无法分配请求的地址

    昨天 我创建了一个名为的 python 脚本sniffer ip header decode py 但我遇到了以下错误 Traceback most recent call last File sniffer ip header decod
  • 通过 (...) 时避免参数重复

    考虑功能 f lt function x X mean c x X 我怎样才能自动 通过操纵f 更改签名f 这样它就可以与lapply 即不返回以下明显的错误 lapply X list 1 FUN f X 1 Error in lappl
  • XMLHttpRequest:浏览器支持 sendAsBinary?

    Firefox 是唯一支持 sendAsBinary 方法的吗 目前 我相信只有 FF3 支持此功能 尽管有一个解决方法 http code google com p chromium issues detail id 35705 for
  • Web 材质组件与 Angular Material 2 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 最近 MDL Material Design Lite 项目的后继项目推出Web 的材料组件 http
  • 如何在 React Native 中打开现有项目?

    我第一次使用 React Native 时 在我的 MacBook 上成功安装了用于 iOS 开发的所有内容 并且能够创建一个项目并在手机上查看它 然而 现在我回到它 我似乎无法弄清楚如何打开我现有的项目 我尝试过寻找指南 但我能找到的唯一
  • 在尾递归函数中使用管道时出现堆栈溢出异常

    我有一个简单的游戏循环实现 let gameLoop gamestate let rec innerLoop prev gamestate let now getTicks let delta now prev gamestate gt r
  • \363\353\377\377\377\177 是什么?

    gdb p char 0x7fffffffe9c8 16 0x7fffffffe9c8 363 353 377 377 377 177 它看起来不像ascii 也不像多字节 那是什么 这些都是octal http en wikipedia
  • 如何改变PCM数据流的音量(实验失败)

    Solved 我的代码以前从未用于处理有符号值 因此字节 gt 短转换错误地处理了符号位 这样做正确地解决了问题 问题是 我正在尝试更改 PCM 数据流的音量 我可以从立体声文件中提取单通道数据 通过跳过 复制它们 插入零 等方式对样本进行
  • iOS 6 无法自动旋转

    在我维护的应用程序中 在纵向和纵向颠倒模式下应该发生旋转 所有旋转均在摘要面板中启用 BOOL shouldAutorotateToInterfaceOrientation UIInterfaceOrientation interfaceO
  • R中多个列表的元素均值

    我有十个巨大的列表 每个列表有七个元素 但元素很大 我需要计算这些列表的元素平均值 那么如果有A1 A2 A3 A10列表 我需要计算 mean1 mean A1 1 A2 1 A3 1 A10 1 mean7 mean A1 7 A2 7
  • 通过 ContentValues 将时间戳插入数据库

    在Android中 是否可以使用以下命令将时间戳插入数据库中ContentValues 当我尝试使用这样的方法添加它时 ContentValues args new ContentValues args put MY DATE my dat
  • 使用 C++ 用户定义的文字来初始化数组

    我有一堆测试向量 以十六进制字符串的形式呈现 MSG 6BC1BEE22E409F96E93D7E117393172A MAC 070A16B46B4D4144F79BDD9DD04A287C MSG 6BC1BEE22E409F96E93
  • 从同一个 onclick 调用两个函数[重复]

    这个问题在这里已经有答案了 HTML 和 JavaScript 如何从一个 onclick 事件调用 2 个函数 这是我的代码
  • .CSHTML 中的 Visual Studio 2010 代码格式 - 缩进不正确

    需要解释的问题非常简单 在 Visual Studio 2010 SP1 中 我在使用 Razor 时发现大括号出现奇怪的缩进问题 它看起来是这样的 div div div div if true b Hi b div div div di
  • Authorize.net 支付集成 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在寻找使用 PHP 与网站进行 Authorize net 支付集成 我的问题是 1 我可以在哪里找到使用 PHP 执行此操作的教程 开发指南和
  • 在 Clojure 中查找与谓词匹配的元素的索引?

    使用 Clojure 如何找到该向量中第一个具有正值的索引 1 0 3 7 9 我知道你可以相当优雅地得到第一个结果first and filter first filter pos 1 0 99 100 101 这段代码返回值99 我想要