【问题标题】:Search in a list of tuples在元组列表中搜索
【发布时间】:2015-10-25 19:01:33
【问题描述】:

我是 Haskell 的新手,遇到了一些问题。 在阅读了高阶函数之后,我尝试解决一些关于元组的练习。

所以,我有一个包含元组的列表,如下所示:

list tup = [("James",19,"SB",2),("Patrick",19,"FDF",4),("Jim",20,"CD",3)]

其中一个问题是比较元组的位置,例如: 获取更高的年龄(元组中的 snd 元素),如下所示:

higherAge tup
>20

我在尝试什么:

higherAge ls = maximum (filter (get2th ls))

get2th (_,a,_,_,_) = a

【问题讨论】:

    标签: list haskell


    【解决方案1】:

    这是一种方法:

    maxAge l = maximumBy (compare `on` (\(a,b,c,d) -> b)) l
    

    您的解决方案的问题是您没有正确使用filterfilter 只是从列表中删除元素,它只会使您的列表更小。您似乎想做的是使用map

    以下内容也应该有效:maximum (map get2th) ls

    【讨论】:

    • 谢谢@rafalio,另一个问题,所以如果我想要一个元组的所有第四个元素的列表,我也可以使用 map 吗?像这样:(map get4th),这应该返回一个包含所有第 4 个元素的列表?
    • 是的,这也可以!实际上,您将需要一个单独的函数来访问元组的每个元素,因为在 Haskell 中您无法获得任意元组。让我知道这是否有帮助,或者您是否需要其他任何东西,否则您可以接受:)
    猜你喜欢
    • 2014-05-01
    • 1970-01-01
    • 2018-08-05
    • 2015-06-08
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    相关资源
    最近更新 更多