以下是我当前的列表理解:[((a,b),a+1) | a <- [1,2], b <- "ab"]
电流输出:[((1,'a'),2),((1,'b'),2),((2,'a'),3),((2,'b'),3)]
预期输出:[((1,'a'),2),((2,'b'),3)]
如何编辑我的列表理解以实现预期输出?
提前感谢!
拥有两个生成器可以生成所有可能的项组合。您需要通过将两个列表压缩在一起生成单个生成器。
[((a,b), a+1) | (a, b) <- zip [1,2] "ab"]
你也可以写
[(t, a+1) | t@(a, _) <- zip [1,2] "ab"]
或
[(t, fst t + 1) | t <- zip [1,2] "ab"]
因为除了重构刚刚从CCD_ 5解包的元组之外,您不关心CCD_。
GHC还提供了一个扩展ParallelListComp
,用于隐式压缩生成器。
> :set -XParallelListComp
> [((a,b), a+1) | a <- [1,2] | b <- "ab"]
请注意使用|
而不是,
来分隔两个生成器。