Better idea for double list comprehension?
bearophile
bearophileHUGS at lycos.com
Sat Jan 18 03:02:45 PST 2014
CJS:
> I'm trying to write a D function that does the same as this
> Python function:
>
> def cross(A, B):
> "Cross product of elements in A and elements in B."
> return [a+b for a in A for b in B]
>
> where A and B are strings. (So cross("ab","12") is ["a1", "b1",
> "a2", "b2"]).
One solution:
import std.stdio, std.conv, std.algorithm, std.array;
string[] cross(in string A, in string B) {
return cartesianProduct(A, B).map!(ab => ab[].text).array;
}
void main() {
cross("ab", "12").writeln;
}
But note that currently cartesianProduct doesn't return the pairs
in a natural order.
cross() should be pure.
Bye,
bearophile
More information about the Digitalmars-d-learn
mailing list