不需要通过zip映射两个列表来获取:
(zipmap ["a","b","c"] ["c","d","e"]) = {"c" "e", "b" "d", "a" "c"}
我想要将第一个列表的第一个元素与第二个列表的第一个元素以此类推连接起来,得到:
("ce","bd","ac")
或者按相反的顺序。
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")
(map str ["a" "b" "c"] ["c" "d" "e"])
- Brian Carperstr
最多只需要两个参数,map str
比map #(str % %2)
更好。当您可以直接传递现有函数时,应避免声明新函数。 - Mark Reed