首页 文章

转换列表haskell

提问于
浏览
0

我有这个列表([Integer],[Integer]),我想将其转换为[(Integer,Integer)] .

我从中读过,我应该使用像 Map 这样的高阶函数 .

alterList :: ([Integer],[Integer]) -> [(Integer,Integer)]
alterList a = map(\a -> .....?)

任何准则?两个列表都是相同的大小

就像我有两个列表([1,2,3,4],[5,6,7,9])我希望转换为[(1,5),(2,6),(3,7) ,(4,8)]

1 回答

  • 4

    所以,在你纠正了你的帖子之后,我想你想要

    alterList :: ([Integer],[Integer]) -> [(Integer,Integer)]
    alterList (l1, l2) = zip l1 l2
    

    例:

    >>> alterList ([1,2,3,4],[5,6,7,9])
    [(1,5),(2,6),(3,7),(4,9)]
    

    这相当于

    alterList' :: ([Integer],[Integer]) -> [(Integer,Integer)]
    alterList' = uncurry zip
    

    请注意,即使两个列表的大小不同,此函数仍然有效:在这种情况下,它就像最长列表被截断为最短列表的长度一样 .

相关问题