在第一个元素上进行转换后立即停止遍历

自己

假设,我有一个List具有鲜明的数字元素:[1, 2, 3, 4, 5]和我想的值更改2,以9在列表中。

我可以使用一个简单的函数来实现这一点:

map (\x -> if x == 2 then 9 else x) [1, 2, 3, 4, 5]

但是从性能角度来看,我认为没有必要遍历整个列表,因为这些元素是不同的。是否有任何其他高阶函数可以在不进行整个列表遍历的情况下执行相同的操作?

我知道可以使用显式递归来解决此问题,但我只是想知道是否可以使用任何现有的高阶函数以有效的方式解决此问题。

安德拉斯·科瓦奇(AndrásKovács)

如果要避免显式递归,可以执行以下操作:

modifyFirst :: (a -> Bool) -> (a -> a) -> [a] -> [a]
modifyFirst p f xs = concat [a, map f (take 1 b), drop 1 b]
    where (a, b) = break p xs

modifyFirst (==2) (const 9) [1, 2, 3, 4, 5] === [1, 9, 3, 4, 5]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在列表的第一个元素上进行Foreach

来自分类Dev

遍历Python列表,但第一个元素在末尾?

来自分类Dev

链表遍历会跳过第一个元素

来自分类Dev

放置第一个UI元素后,Android Studio停止响应

来自分类Dev

差异在第一个差异后停止

来自分类Dev

在空格后得到第一个元素

来自分类Dev

查找文本后的第一个元素

来自分类Dev

Python:遍历列表和子列表并匹配第一个元素并进行更多操作

来自分类Dev

遍历numpy ndarray,管理第一个和最后一个元素

来自分类Dev

在postgres的第一个表上进行左联接预过滤

来自分类Dev

多维数组 仅在第一个子阵列上进行转移

来自分类Dev

在第一个主机文件条目上进行Windows 7查找

来自分类Dev

从 http GET 获得第一个结果后立即显示项目

来自分类Dev

遍历数组的每个元素(第一个元素除外)

来自分类Dev

循环遍历 Div 中的元素仅获取第一个元素

来自分类Dev

在Neo4j中到达第一个所需的节点时,停止遍历

来自分类Dev

父复选框遍历第一个孩子然后停止

来自分类Dev

遍历2个数组仅循环第一个元素

来自分类Dev

避免对第一个和/或最后一个元素进行操作

来自分类Dev

获取一个基于列表的第一个元素进行乘法或求和的函数

来自分类Dev

将列表的第一个元素与另一个列表进行比较

来自分类Dev

XPATH的第一个元素

来自分类Dev

XPATH的第一个元素

来自分类Dev

缩进的第一个元素

来自分类Dev

在第一个匹配项后循环遍历数组并执行其他操作?

来自分类Dev

在第一个匹配项后循环遍历数组并执行其他操作?

来自分类Dev

如何遍历此数组并获取第一个元素?

来自分类Dev

无法遍历javascript中的对象数组。仅输出第一个元素

来自分类Dev

遍历嵌套集合以找到与条件匹配的第一个子-子-子元素

Related 相关文章

  1. 1

    在列表的第一个元素上进行Foreach

  2. 2

    遍历Python列表,但第一个元素在末尾?

  3. 3

    链表遍历会跳过第一个元素

  4. 4

    放置第一个UI元素后,Android Studio停止响应

  5. 5

    差异在第一个差异后停止

  6. 6

    在空格后得到第一个元素

  7. 7

    查找文本后的第一个元素

  8. 8

    Python:遍历列表和子列表并匹配第一个元素并进行更多操作

  9. 9

    遍历numpy ndarray,管理第一个和最后一个元素

  10. 10

    在postgres的第一个表上进行左联接预过滤

  11. 11

    多维数组 仅在第一个子阵列上进行转移

  12. 12

    在第一个主机文件条目上进行Windows 7查找

  13. 13

    从 http GET 获得第一个结果后立即显示项目

  14. 14

    遍历数组的每个元素(第一个元素除外)

  15. 15

    循环遍历 Div 中的元素仅获取第一个元素

  16. 16

    在Neo4j中到达第一个所需的节点时,停止遍历

  17. 17

    父复选框遍历第一个孩子然后停止

  18. 18

    遍历2个数组仅循环第一个元素

  19. 19

    避免对第一个和/或最后一个元素进行操作

  20. 20

    获取一个基于列表的第一个元素进行乘法或求和的函数

  21. 21

    将列表的第一个元素与另一个列表进行比较

  22. 22

    XPATH的第一个元素

  23. 23

    XPATH的第一个元素

  24. 24

    缩进的第一个元素

  25. 25

    在第一个匹配项后循环遍历数组并执行其他操作?

  26. 26

    在第一个匹配项后循环遍历数组并执行其他操作?

  27. 27

    如何遍历此数组并获取第一个元素?

  28. 28

    无法遍历javascript中的对象数组。仅输出第一个元素

  29. 29

    遍历嵌套集合以找到与条件匹配的第一个子-子-子元素

热门标签

归档