首页 > 解决方案 > 你怎么能用 Haskell 中的无限列表在一行中重写这个函数呢?

问题描述

我仍然对如何使用 Haskell 感到有些困惑。我理解这个概念,但如果给定这种 Python 函数,它怎么能写成一行?

def makeTupleList(ls):
    mylist = []
    counter = 1
    for x in ls:
        mylist.append((counter, x))
        counter += 1
    return mylist

标签: haskell

解决方案


使用该zip功能。它需要两个列表并将它们组合成对应对的列表。结果列表的长度将是最短列表的长度,这意味着您可以使用无限列表进行压缩,并且当另一个列表用完时它将停止。

makeTupleList :: [a] -> [(Int, a)]
makeTupleList ls = zip [1..] ls

推荐阅读