如何在F#中有多个用于列表理解的生成器?

如何在F#中有多个用于列表理解的生成器?,f#,F#,我正试着写这样的东西 [(x,y)|x<- [1,2,3], y <- [’a’,’b’]] => [(1,’a’),(1,’b’),(2,’a’),(2,’b’),(3,’a’),(3,’b’)] [(x,y)| xF#等效 List.zip [1;2;3] ['a';'b';'c'] 只是另一种有趣的方式 [1;2;3] |> List.map ( fun X -> ['a';'b'] |> List.map (fun A -> X,A) )

我正试着写这样的东西

[(x,y)|x<- [1,2,3], y <- [’a’,’b’]]
 => [(1,’a’),(1,’b’),(2,’a’),(2,’b’),(3,’a’),(3,’b’)]
[(x,y)| xF#等效

List.zip [1;2;3] ['a';'b';'c']
只是另一种有趣的方式

[1;2;3] |> List.map ( fun X -> ['a';'b'] |> List.map (fun A -> X,A) )

可能重复:不完全相同-这会将元素配对到相应的位置(因此需要相同长度的列表);问题是查找两个列表的笛卡尔乘积。@kvb-谢谢您指出。下次理解问题时我需要更加小心。或者更确切地说是
[1;2;3]|>List.collect(有趣的X->是的,它一定更好。
[1;2;3] |> List.map ( fun X -> ['a';'b'] |> List.map (fun A -> X,A) )