【问题标题】:Replace second tuple value in list of tuples替换元组列表中的第二个元组值
【发布时间】:2014-03-14 23:28:00
【问题描述】:

我有一个列表 A,[('a', 3), ('b', 0), ('c',0)],并想将 ('b',0) 替换为 ('b', 13)。 并返回一个新列表 B,[('a', 3), ('b', 13), ('c',0)]。我如何在haskell中做到这一点?

谢谢

【问题讨论】:

标签: list haskell replace tuples


【解决方案1】:

如果您只想替换所有出现的('b', 0),那么您可以使用map

b = map (\p -> if p == ('b', 0) then ('b', 13) else p) a

如果你想在第一个元素是'b'的情况下替换第二个值,那么你可以这样做:

map (\p@(f, _) -> if f == 'b' then ('b', 13) else p) l

【讨论】:

  • 太好了,我知道 map 可以做到,但我不知道语法...我可以修改它,以便只有在我知道第一个值 'b 时才替换元组'?
  • 非常感谢您的帮助!
  • @Lee 查看有关answering homework questions 的答案。
【解决方案2】:

您也可以这样做;

set :: (Char,Int) -> [(Char,Int)] -> [(Char,Int)]
set (k,v) []                  = []
set (k,v) (t:ts) | k == fst t = (k,v) : ts
                 | otherwise  = t : set (k,v) ts

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 2019-06-27
    • 2013-03-21
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多