list - 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]
解决方案
该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
状态,这样您就不会从一个空列表开始。 - 要重复执行给定次数,您只需要使用递归多次执行此操作
推荐阅读
- c++ - 缺少终止字符
- reactjs - npm包中antd的使用
- azure-blob-storage - Azure Blob:如果目标容器中的虚拟目录路径不完全匹配,则 StartCopyAsync 失败
- python - 如何优雅地在python中串行(或区分)函数参数或串行函数调用结果?
- c - 当目标值等于程序中的 res 值时,如何终止程序?
- android - 如何从 UmmalquraCalendar 单击按钮获取下一个和上一个日期?
- javascript - 云消息传递在 react-native-firebase v6.xx 中如何工作?
- laravel - 作曲家版本要求
- python - 包装python字典或设置到新行
- sql - 如何将表 ID 从串行更改为身份?