我正在为明天的期末考试进行锻炼。我正在尝试一些奇怪的例子。例如,我给出了一个这样的子列表:[[1, 2], [2, 3, 4], [5, 6], [7, 8], [8, 9, 10]]
。我想将第二和第三个子列表加在一起,并使用列表理解返回它们的总和。我尝试了很多东西,但我无法成功。如何正确添加列表理解的第二和第三个子列表
我意识到列表理解会生成每个子列表的cons对并尝试添加每个cons对的第二个和第三个元素。但这不是我想要的。我想输出[20],因为2 + 3 + 4 + 5 + 6 = 20.
我写了这个,我试图只在cons对中添加第二个子列表。但是,那么也无法生成第三个子列表。所以,我种的卡:
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个元素,然后将其相加的第2和第3个元素的子列表这些子列表。
为什么要使用列表理解的任何特定原因,在这里? – Jubobs 2014-12-07 17:36:03
因为我试图行使列表理解。 – 2014-12-07 17:38:06