Zip two lists in clojure into list of concatenated strings

前端 未结 1 974
野趣味
野趣味 2021-01-18 09:32

Instead of zip-mapping two lists to get:

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

I wan

相关标签:
1条回答
  • 2021-01-18 10:15

    You can do that with map. map can take multiple collections, it takes the next element from each collection and passes them into the function passed as the first argument (stopping when one of the collections runs out). So you can pass in a function that takes n arguments, and n collections.

    The expression

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

    will call str first with "a" and "c", then with "b" and "d", then with "c" and "e". The result will be

    ("ac" "bd" "ce")
    

    Since str can takes a variable number of arguments it can be used with any number of collections. Passing in four collections, like

    (map str ["a" "b" "c"] ["d" "e" "f"] ["g" "h" "i"] ["j" "k" "l"])
    

    will evaluate to

    ("adgj" "behk" "cfil")
    
    0 讨论(0)
提交回复
热议问题