2011-10-27 24 views
6

yerine fermuar haritalama iki listeleri almak için:Zip İki liste

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

Ben ikinci listenin ilk öğesini ilk listenin ilk elemanını bitiştirmek istiyoruz ve Bu şekilde almak için

veya ters sırada.

cevap

12

Bunu map ile yapabilirsiniz. map, birden çok koleksiyon alabilir, her koleksiyondan sonraki öğeyi alır ve ilk bağımsız değişken olarak iletilen işleve (koleksiyonlardan biri bittiğinde durarak) geçirir. Böylece, n argümanları ve n koleksiyonları alan bir işlevi iletebilirsiniz.

sentezleme

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

sonra "c" ve "e", daha sonra "b" ve "d" ile, "a" ve "c" ile ilk str çağırır. str kutu koleksiyonlar herhangi bir sayı ile kullanılabilen bağımsız değişken bir dizi tedbir yana sonuç

("ac" "bd" "ce") 

olacaktır.

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

gibi, dört koleksiyonlarında geçen değerlendirecektir

("adgj" "behk" "cfil") 
+9

ya da '(harita str [ "a", "b", "c"] [ "c", "d", "e"]) için –

+0

İyi cevap. Haritaların, her zaman öğreticilerde yer almayan, birden çok koleksiyonla nasıl anlaştıklarını bilmeye dayanır. –

+0

@Brian: Teşekkürler, metni cevaplamak için bunu ekledim. –