Forum Discussion
lmgibs04
2 years agoRegular Visitor
Cartesian Product of String Lists in M
Hello Everyone, I'm looking to create a cartesian product of two lists of strings through a function in M. Imagine I have lists {"a","b","c"} and {"1","2","3"} and I want to create a list...
- 2 years ago
You may use this
let list1 = {"a", "b", "c", "d"}, list2 = {1, 2, 3} in List.Split(List.TransformMany(list2, (x)=>list1, (x,y)=> y & Text.From(x)), List.Count(list1)) - Anonymous2 years ago
Hi lmgibs04 ,
Vijay_A_Verma Good Answer!
And you can also try this:let List1 = {"a", "b", "c"}, List2 = {"1", "2", "3"}, Product = List.Transform(List2, each let currentItem = _ in List.Transform(List1, each _ & currentItem)), Result = List.Zip(Product), #"Converted to Table" = Table.FromList(Result, Splitter.SplitByNothing(), null, null, ExtraValues.Error), #"Extracted Values" = Table.TransformColumns(#"Converted to Table", {"Column1", each Text.Combine(List.Transform(_, Text.From), "#(tab)"), type text}), #"Split Column by Delimiter" = Table.SplitColumn(#"Extracted Values", "Column1", Splitter.SplitTextByDelimiter("#(tab)", QuoteStyle.Csv), {"Column1.1", "Column1.2", "Column1.3"}), #"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Column1.1", type text}, {"Column1.2", type text}, {"Column1.3", type text}}) in #"Changed Type"Just put all of this M function into Advanced Editor, and the final output is as below:
Best Regards,
Dino Tao
If this post helps, then please consider Accept both of our answers as the solution to help the other members find it more quickly.
Vijay_A_Verma
2 years agoMost Valuable Professional
You may use this
let
list1 = {"a", "b", "c", "d"},
list2 = {1, 2, 3}
in
List.Split(List.TransformMany(list2, (x)=>list1, (x,y)=> y & Text.From(x)), List.Count(list1))