【发布时间】:2014-12-07 17:32:27
【问题描述】:
我明天要参加期末考试。我正在尝试几个奇怪的例子。例如,给了我一个像这样的子列表列表:[[1, 2], [2, 3, 4], [5, 6], [7, 8], [8, 9, 10]]。我想将第二个和第三个子列表加在一起,并使用列表理解返回它们的总和。我尝试了很多事情,但我无法成功。
我意识到列表推导会为我的每个子列表生成一个 cons 对,并尝试添加每个 cons 对的第二个和第三个元素。但这不是我想要的。我想输出[20],因为2+3+4+5+6 = 20。
我写了这个,我试图只在一个缺点对中添加第二个子列表。但是没有办法也生成第三个子列表。所以我有点卡住了。:
sumTwoThree::[[Int]]->[Int]
sumTwoThree list = [(x + xs) | (x:xs)<-(list!!1)]
我也写了这个:
sumTwoThree::[[Int]]->[Int]
sumTwoThree list = [head xs + head (tail xs) | (x:xs)<-list, (length xs > 1)]
但这只会生成至少包含 3 个元素的子列表,然后将这些子列表的第二个和第三个元素相加。
【问题讨论】:
-
您想在这里使用列表理解的任何特殊原因?
-
因为我正在尝试练习列表理解。
标签: haskell list-comprehension