列出缺点到功能?

List Cons-Into Function?

我经常想要获取一个列表并将每个元素都放入现有列表中。

MyList = [3,2,1],
MyNewElements = [4,5,6],
MyNewList = lists:foldl(fun(A, B) -> [A | B] end, MyList, MyNewElements).
%% [6,5,4,3,2,1]

假设 MyList 有 1M 个元素而 MyNewElements 只有几个,我想高效地做到这一点。

我无法弄清楚这些函数中的哪一个(如果有的话)做了我想做的事情: https://www.erlang.org/doc/man/lists.html

因为erlang是函数语言,不同于c,javascript,它是复制变量并修改它,而不是仅仅修改它。因此不可能压缩到o(A)。length(A)是新增元素的长度。

将短列表添加到长列表的开头很便宜 - ++ 运算符的执行时间与第一个列表的长度成正比。复制第一个列表,第二个列表不加修改直接添加到尾部

所以在你的例子中,那将是:

lists:reverse(MyNewElements) ++ MyList

lists:reverse/1的执行时间也与参数的长度成正比。)

除了已经提供的选项之外,还有一个选项就是

NewDeepList = [MyList | DeepList]

并修改 reading/traversing 以能够处理 [[element()]] 而不是 [element()]