У меня есть список A, [('a', 3), ('b', 0), ('c',0)]
, и вы хотите заменить ('b',0)
на ('b', 13)
. И верните новый список B, [('a', 3), ('b', 13), ('c',0)]
. Как это сделать в haskell?Заменить второе значение кортежа в списке кортежей
Благодаря
У меня есть список A, [('a', 3), ('b', 0), ('c',0)]
, и вы хотите заменить ('b',0)
на ('b', 13)
. И верните новый список B, [('a', 3), ('b', 13), ('c',0)]
. Как это сделать в haskell?Заменить второе значение кортежа в списке кортежей
Благодаря
Если вы просто хотите, чтобы заменить все вхождения ('b', 0)
, то вы можете использовать map
:
b = map (\p -> if p == ('b', 0) then ('b', 13) else p) a
Если вы хотите заменить второе значение, если первый элемент «б», то вы может:
map (\[email protected](f, _) -> if f == 'b' then ('b', 13) else p) l
Вы также можете сделать следующее:
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
Этот вопрос не показывает никаких исследований. Пожалуйста, прочитайте о [Как задать хороший вопрос] (http://stackoverflow.com/questions/how-to-ask). – crockeea