2017-04-02 68 views
1

給定一個正方形數組,是否有方法使用應用樣式或類似方法將每個[[a]]的第一個元素「緊縮」,然後是第二個元素,依此類推?加入子列表中的元素

> let xss = [[1,4,7], [2,5,8], [3,6,9]] :: [[Int]] 
> map (\i -> map (!! i) xss) [0..length xss - 1] 
[[1,2,3],[4,5,6],[7,8,9]] 

我寫了一個編程挑戰網站上面的解決方案,但我不開心與map (!! i)[0..length xs - 1]。有沒有更高級的方法來做到這一點?

+6

您正在尋找['Data.List.transpose'](http://hackage.haskell.org/package/base-4.9.1.0/docs/Data-List.html#v:transpose)。 – Jubobs

+0

啊,當然!謝謝! –

+0

@Jubobs你爲什麼不回答這個問題?這樣它就會從未回答的問題清單中被清除,並且可以被接受? –

回答