Сжать два списка заодно в список объединенных строк - PullRequest
6 голосов
/ 28 октября 2011

Вместо zip-отображения двух списков, чтобы получить:

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

Я хочу объединить первый элемент первого списка с первым элементом второго списка и так далее, чтобы получить:

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

или в обратном порядке.

1 Ответ

12 голосов
/ 28 октября 2011

Вы можете сделать это с помощью map.map может принимать несколько коллекций, он берет следующий элемент из каждой коллекции и передает их в функцию, переданную в качестве первого аргумента (останавливается, когда заканчивается одна из коллекций).Таким образом, вы можете передать функцию, которая принимает n аргументов и n наборов.

Выражение

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

сначала вызовет str с "a" и "c", затем«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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...