【问题标题】:haskell - turning list of lists into one listhaskell - 将列表列表转换为一个列表
【发布时间】:2012-09-29 02:30:29
【问题描述】:

如果我有一个列表列表,比如[[1,2,3],[1,2,3],[1,2,3]],Haskell 有什么办法可以将它变成一个列表,比如[1,2,3,1,2,3,1,2,3]

提前致谢!

【问题讨论】:

    标签: list function haskell


    【解决方案1】:

    Concat 做你想做的事:

    concat [[1,2,3],[1,2,3],[1,2,3]]
    

    以后要找到这类功能,可以使用hooglehttp://www.haskell.org/hoogle/

    你可以搜索一个类型——你需要的函数是[[Int]] -> [Int],所以你可以做this search。最上面的函数是concat。

    其实我应该提一下

    concat :: [[a]] -> [a]
    

    所以它适用于任何列表列表,您也可以非常愉快地搜索 用那种类型来胡闹。 Hoogle足够聪明,可以理解 不过,哪些类型与您的要求非常接近。

    【讨论】:

      【解决方案2】:

      有一些方法可以做到这一点,你可以使用列表推导,例如:

      [y | x <- [[1,2,3],[1,2,3],[1,2,3]], y <- x]
      

      或加入函数,实际上,同样的方式:

      import Control.Monad (join)
      join [[1,2,3],[1,2,3],[1,2,3]]
      

      或连接函数:

      concat [[1,2,3],[1,2,3],[1,2,3]]
      

      或msum(与concat相同):

      import Control.Monad (msum)
      msum [[1,2,3],[1,2,3],[1,2,3]]
      

      或 mconcat(与 concat 相同):

      import Data.Monoid (mconcat)
      mconcat [[1,2,3],[1,2,3],[1,2,3]]
      

      【讨论】:

      • 谢谢!这对于查看您可以做一件事的不同方式非常有用! :)
      【解决方案3】:

      直接回答

      > concat [[1,2,3],[1,2,3],[1,2,3]]
      [1,2,3,1,2,3,1,2,3]
      

      您应该在想要搜索任何功能时尝试hoogle。有时键入就足以获取有关您需要的功能的信息。

      【讨论】:

      • 正是我想要的!谢谢! :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-05
      • 2016-05-27
      • 1970-01-01
      • 2012-02-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      相关资源
      最近更新 更多