如何将整数列表拆分为两个列表:一个是正数,另一个是负数?
这是我的尝试:
有可能做到吗?
split:: [Int]->[[Int]]
split [] =[[]]
split xs =[x|x<-xs, x<0]:[y|y<-xs, x>=0]我第二次尝试:
split:: [Int]->([Int],[Int])
split [] =([],[])
split xs = ([x|x<-xs,x<0],[y|y<-xs,y>=0])不知怎么的,我还是没有得到正确的结果。
当我跑的时候
split [1,2-2,3-4]我得到了
([-1],[1,0]) 发布于 2014-06-21 16:54:42
您可以使用partition函数来完成这一任务:
import Data.List
split = partition (>=0)你的尝试有一些问题。首先,您需要插入x:xs模式,否则它将被解析为(split x):xs,这不是您的意思。其次,它将产生一个类型错误,因为右边的:操作符应该被赋予一个元素作为它的左参数,而这些元素的列表作为它的右参数,但是您已经给它一个列表作为两个参数。最后,由于您只想返回两个列表,所以应该为返回类型使用一个元组,而不是嵌套列表。
https://stackoverflow.com/questions/24343787
复制相似问题