我如何将[1,2,3]添加到[5,4,6]以返回[6,6,8]这是我到目前为止的内容:
func1 :: [Int]->[Int]->[Int]
func1 x y = [a+b|a<-x,b<-y]
我应该尝试删除不需要的元素,还是有一种更简单的方法来做到这一点?
您正在寻找zipWith
。特别是func1 x y = zipWith (+) x y
。您也可以“减少”来删除这些额外的参数:func1 = zipWith (+)
。这是我能想到的最有效的形式。
您当前的方法无效,因为[a+b | a <- x, b <- y]
形成了两个嵌套循环,一个在x
es上,一个在y
s上,在其中。这是列表推导的本质,它基于Set Builder Notation。读它的一种方法是“从X每一个,从y各自B,给我(a + b)
”,而我们实际上要贯穿x
和y
在一起。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句