首页 > 解决方案 > F#从两个列表中创建对列表

问题描述

我需要在 F# 中创建一个函数来将两个列表中的元素配对在一起(参见下图中的 (ii)):在此处输入图像描述 我实际上并不完全确定问题在问什么:我是否需要创建一个需要两个列表的函数列出并返回一个对列表,其中结果列表中的第 i 个元素是一对,其中对中的第一个元素是第一个列表中的第 i 个元素,对中的第二个元素是第二个列表中的第 i 个元素?我不明白什么*意思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)

        ]

我不知道该怎么做,因为我不知道如何遍历列表?帮助

标签: f#

解决方案


函数签名中的*表示输入是两个列表的元组,输出是元组列表。实现这一点的最简单方法是使用 List.zip 函数:

let pairlists ((a, b) : 'a list * 'b list) = 
    List.zip a b

在这里,我们将输入参数定义为 'a list 和 'b list 的元组,并将列表传递给List.zip : 'T1 list -> 'T2 list -> ('T1 * 'T2) list相应的


推荐阅读