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

时间:2011-10-27 21:08:27

标签: list clojure

而不是zip-mapping两个列表来获取:

(zipmap ["a","b","c"] ["c","d","e"]) = {"c" "e", "b" "d", "a" "c"} 

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

("ce","bd","ac") 

或以相反的顺序。

1 个答案:

答案 0 :(得分:12)

您可以使用map执行此操作。 map可以接受多个集合,它从每个集合中获取下一个元素,并将它们传递给作为第一个参数传递的函数(当其中一个集合用完时停止)。所以你可以传入一个带有n个参数和n个集合的函数。

表达式

(map str ["a" "b" "c"] ["c" "d" "e"])

首先使用“a”和“c”调用str,然后使用“b”和“d”,然后使用“c”和“e”调用("ac" "bd" "ce") 。结果将是

str

由于(map str ["a" "b" "c"] ["d" "e" "f"] ["g" "h" "i"] ["j" "k" "l"]) 可以采用可变数量的参数,因此它可以与任意数量的集合一起使用。传递四个集合,例如

("adgj" "behk" "cfil")

将评估为

{{1}}