将clojure中的两个列表压缩到连接字符串列表中

Col*_*ker 6 list clojure

而不是zip映射两个列表来获得:

(zipmap ["a","b","c"] ["c","d","e"]) = {"c" "e", "b" "d", "a" "c"} 
Run Code Online (Sandbox Code Playgroud)

我想连接第一个列表的第一个元素与第二个列表的第一个元素,依此类推得到:

("ce","bd","ac") 
Run Code Online (Sandbox Code Playgroud)

或者以相反的顺序.

Nat*_*hes 12

你可以这样做map.map可以获取多个集合,它从每个集合中获取下一个元素,并将它们传递给作为第一个参数传递的函数(当其中一个集合用完时停止).所以你可以传入一个带有n个参数和n个集合的函数.

表达方式

(map str ["a" "b" "c"] ["c" "d" "e"])
Run Code Online (Sandbox Code Playgroud)

str首先用"a"和"c" 调用,然后用"b"和"d" 调用,然后用"c"和"e" 调用.结果将是

("ac" "bd" "ce")
Run Code Online (Sandbox Code Playgroud)

由于str可以使用可变数量的参数,因此它可以与任意数量的集合一起使用.传递四个集合,如

(map str ["a" "b" "c"] ["d" "e" "f"] ["g" "h" "i"] ["j" "k" "l"])
Run Code Online (Sandbox Code Playgroud)

将评估为

("adgj" "behk" "cfil")
Run Code Online (Sandbox Code Playgroud)

  • 或者`(map str ["a""b""c"] ["c""d""e"])` (9认同)