首页 > 解决方案 > F# - 使用 List.foldBack 将列表连接到自身

问题描述

您如何使用 List.foldBack 将列表连接到自身?

例如,如果函数的输入列表是:[10; 20; 30; 40] 那么输出将是:[10; 20; 30; 40; 10个;20; 30; 40]

有没有办法多次执行此操作并能够指定列表将自身连接到自身的次数?例如,三倍是:[10; 20; 30; 40; 10个;20; 30; 40; 10个;20; 30; 40]

标签: listf#concatenation

解决方案


foldBack函数保持一个状态,并在当前状态和给定列表的所有元素上迭代地应用一个函数。在您的情况下,您希望保留一些列表作为状态,并在迭代输入时以正确的方式将元素附加到它。

以下将重新创建与原来相同的列表:

let list = [ 10; 20; 30 ]
let init = [] 
List.foldBack (fun x xs -> x::xs) init list

这从 开始[],从末尾逐渐附加元素到 this,所以你得到[30], then[20; 30]和 then [10; 20; 30]

这应该为您提供足够的背景来弄清楚您需要什么:

  • 要获得一个附加到自身的列表,您需要选择正确的init状态,这样您就不会从一个空列表开始。
  • 要重复执行给定次数,您只需要使用递归多次执行此操作

推荐阅读