我已经搜索了该网站,但找不到特定于此问题的任何内容。
我有一个列表,其中包含三元组strings
和integers
如下所示:
mylist = [("Amy", 6), ("Scott, 3"), ("Bradley", 4)]
我想编写一个函数,该函数将仅将此列表中的所有整数相加
我目前有以下功能:
addMarks :: [(String, Int)] -> Int
addMarks pairList = [ j+j | (i,j) <- pairList ]
j+j
不起作用,我不确定正确的语法是只添加'j'
s并保留i
.
你想要对一对的第二个值求和。有一个函数用于对列表的内容求和(sum
),还有一个函数用于获取一对的第二个值(snd
):
addMarks = sum . map snd
map f
获取一个列表,并通过对每个元素应用f
来返回一个新列表。如果你想为此使用列表理解,你最终会得到
addMarks pairList = sum [ j | (_,j) <- pairList ]
因为列表理解只是filter
和map
的语法糖。