arrays - Elm 中的阵列与列表

标签 arrays list elm

令我惊讶的是,ArrayList是Elm中的两种不同类型:

  • Array
  • List

  • 就我而言,我有一个长度为2,000,000的List Int,我需要大约10,000,但是我事先不知道哪一万。那将由另一个列表提供。用伪代码:
    x = [ 1,1,0,30,...,255,0,1 ]
    y = [ 1,4,7,18,36,..., 1334823 , ... 1899876 ]
    z = [ y[x[0]], y[x[1]], ... ]
    

    我使用伪代码,因为显然这不是Elm语法(它可能是合法的JavaScript)。

    可以使用ListArray或同时使用这两种方法来选择这些数组吗?

    最佳答案

    List是一个链表,它根据索引提供O(n)查找时间。通过索引获取元素需要遍历n节点上的列表。核心库中没有List的索引查找功能,但是您可以使用elm-community/list-extra软件包,该软件包提供了两个查找功能(按参数顺序变化): !! getAt
    Array允许O(log n)索引查找。可以使用 Array 完成对Array.get的索引查找。数组表示为Relaxed Radix Balanced Trees

    两者都是不可变的(榆树中的所有值都是不可变的),因此您需要根据情况进行权衡。进行大量更改时,List很棒,因为您只是在更新链表指针,而Array则非常适合快速查找,但是修改性能较差,如果进行大量更改,则需要考虑这一点。 。

    关于arrays - Elm 中的阵列与列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37707577/

    相关文章:

    python - 获取数字列表的列表并将它们显示为网格中的字符串

    Elm - 如何根据另一个信号修改一个信号的参数化

    elm - 如何在 elm 中进行实时重新加载/自动页面刷新?

    python - 在循环中切片 NumPy 数组

    javascript - 这是使用 JS.map 的正确方法吗?

    javascript - Angularjs从数组中删除项目的方法

    java - 如何在android中将HashMap转换为json数组?

    c# - 使用 Linq 和 C# 创建列表中项目的所有可能组合

    C# For Loop with LIST 使用 LINQ

    tuples - 在 Elm 中将列表转换为元组