在字符串[]列表f#中列出一个元素

时间:2014-08-24 19:40:41

标签: string list recursion f# stack-overflow

我有一个string []列表,我希望将所有列表的字符串数组中的第5个元素分组..

我发现了两种不同的方法

let rec Publication x y (z:string [] list) = 
    if x < z.Length then  
        let muro =  [z.[x].[y]]
        let rest = Publication (x+1) y z
        List.append muro rest     
    else  []

其中z是字符串[]列表,y是我要列出的元素。 和

let Publication x (z:string [] list) = [for i in 0 .. (z.Length-1)  -> z.[i].[x]] 

在第一种情况下,处理大量数据时出现堆栈溢出错误,第二种情况需要很长时间。任何人都可以帮我找到第三种更有效的方法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

你的第二个版本表面上似乎是明智的,但我想知道问题不是z的索引访问,因为列表是从每个z.[i]调用的头部迭代的。我会尝试简单明了:

let publication idx (lst: string [] list) = 
    lst |> List.map (fun arr -> arr.[idx])

你有一个数组列表和一个索引,你可以浏览列表并通过每个数组的索引获取元素。