gpt4 book ai didi

list - Clojure - 对列表列表中的每个项目进行操作

转载 作者:行者123 更新时间:2023-12-05 00:58:00 24 4
gpt4 key购买 nike

我正在 Clojure 中开发我的第一个函数式程序。我在弄清楚如何逐步遍历列表中的每个项目、列表中的每个列表中的每个项目并在保留返回值的同时对其进行操作时遇到了一些问题。我确信这个问题来自我对 Clojure 和函数式编程的不熟悉,并且希望有人可以解释执行以下操作的最佳方法:

psuedo-code algorithm:
for each lst in list
for each item in lst
return_values.append = do_something(item)

我首先尝试嵌套两个 doseq函数然后调用我的 do_something函数,它可以在项目上调用函数,但没有保存我的返回值。然后我尝试了一个 forcons到一个空列表,但无法在 for 之外获取我的返回值.

是否可以/最好先分解列表列表?我还能得到返回值列表的列表吗?

最后,我希望结果是返回值列表的列表,以匹配列表的输入列表。
如果有人能解释在 Clojure 中执行此操作的最佳方法以及原因,将不胜感激。

最佳答案

嵌套 for循环可以解决问题:

(for [lst my-list]
(for [item lst] (do_something item)))

它将采用嵌套列表 my-list (列表列表)并通过应用 do_something 将其转换为另一个嵌套列表到每个元素。

在 clojure 中, for已经返回一个值列表,因此无需自己处理。此外,由于 clojure 中的所有数据结构都是不可变的,因此您无法通过使用 cons 将元素附加到最初为空的列表来做到这一点。 .

关于list - Clojure - 对列表列表中的每个项目进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33725853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com