View Problem

Produce the combinations from two lists

Given two lists, produce the list of tuples formed by taking the combinations from the individual lists. E.g. given the letters ["a", "b", "c"] and the numbers [4, 5], produce the list: [["a", 4], ["b", 4], ["c", 4], ["a", 5], ["b", 5], ["c", 5]]
DiskEdit
python 2.5.2
[(x, y) for y in [1,2] for x in ['a','b','c']]
DiskEdit
python >= 2.6
import itertools
[x for x in itertools.product(["a", "b", "c"], [4, 5])]
ExpandDiskEdit
erlang
Combinations =
lists:foldl(fun (Number, Acc) -> Acc ++ lists:map(fun (Letter) -> {Letter, Number} end, Letters) end, [], Numbers),
ExpandDiskEdit
erlang
Combinations = lists:keysort(2, sofs:to_external(sofs:product(sofs:set(Letters), sofs:set(Numbers))))
DiskEdit
erlang
[[A, B] || A <- ["a", "b", "c"], B <- [4, 5]].

DiskEdit
clojure
(defn combine [lst1 lst2]
(mapcat (fn [x] (map #(list % x) lst1)) lst2))
DiskEdit
clojure
(mapcat (fn [x] (map #(list % x) ["a", "b", "c"])) [4, 5])
ExpandDiskEdit
fantom
[4,5].each |Int i| { ["a","b","c"].each |Str s| { r.add([i,s]) } }

Submit a new solution for python, erlang, clojure, or fantom
There are 18 other solutions in additional languages (cpp, csharp, fsharp, groovy ...)