F#从两个列表中制作成对列表

用户名

我需要在F#中创建一个函数以将两个列表中的元素配对在一起(请参见下图中的(ii)):在此处输入图片说明我实际上不确定要问的是什么:我是否需要创建一个包含两个元素的函数?列出并返回一个对的列表,其中结果列表中的ith个元素是一个对,其中对中的第一个元素是第一个列表中的ith元素,而对中的第二个元素是第二个列表中的ith个元素?我不明白这*什么意思val pairlists :'a list * 'b list -> ('a * 'b)list

如果那是我应该做的,那么这就是我尝试过的:

let pairlists (l : 'a list) (m : 'b list) =
    if l.Length <> m.Length then 
        failwith "the two lists does not have the same size"
    else 
        [for i in 1 .. l.Length do
            yield (l.Head,m.Head)

        ]

我不确定该怎么做,因为我不知道该如何遍历列表?救命

费奥多·索金(Fyodor Soikin)

您可以通过模式匹配来遍历列表,这是使用match ... with表达式完成的

例如:

f l = 
   match l with
   | head :: tail -> "This list has at least one element!"
   | _ -> "This list is empty"

> f [1]
> "This list has at least one element!"

> f [1; 2]
> "This list has at least one element!"

> f []
> "This list is empty"

在您的情况下,可能有几种可能性:两个列表都是空的,一个列表是空的,另一个列表不是,或者两个都有至少一个元素:

pairlists l m =
    match l, m with
    | (lhead :: ltail), (mhead :: mtail) ->  // both non-empty
    | [], (mhead :: mtail) ->  // first list empty, second is not
    | (lhead :: ltail), [] ->  // second is empty, first is not
    | [], [] ->  // both are empty

现在,您需要做的就是确定这四种情况中每种情况下函数的结果,然后将其写下来。

我不会给您完整的答案,因为这显然是家庭作业,但这是另一个提示:将两个非空列表配对意味着将其头部(即第一个元素)配对,然后将其尾部配对,然后将两者连接在一起。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

过滤两个列表f#

F#相交两个列表

球拍:从两个清单中制作成对清单

从两个列表中制作元组

如何从两个列表中制作列表列表

如何从两个列表中删除重复的元素(成对)?

numpy中两个列表上的成对运算(距离)

如何从python中的两个列表制作字典列表

最好使用成对的列表还是两个列表?

将成对的列表/元组拆成两个列表/元组

将成对的列表/元组拆成两个列表/元组

在列表的两个列表上使用成对的pmin()

如何从存储在元组列表列表中的两个元素元组中制作两个列表

制作两个列表的ndarray python

两个列表之间元素的成对相乘

F#创建函数,用于比较两个包含列表的列表

在两个列表中的矩阵之间执行成对回归分析

来自 Python 中具有条件的两个列表的成对组合

比较两个列表后如何制作列表

如何根据java中的其他两个列表制作列表

比较两个列表的元素0;用z [0]中不在x中的项制作新的列表列表

F#将功能一次应用于两个列表

所区分联合列表F#的两个值的总和

如何从Python中的两个列表制作一个json

从两个列表创建一个json以在Javascript中制作堆叠的条形图

Haskell-使用折叠将成对的列表分成两个列表

成对添加两个列表,使源列表之一发生变异

F# 中的递归函数,用于确定 int 类型的 n 个元素的列表中两个相邻值中的较大值

在F#中合并2个列表