Erlang中的重复元素列表
Posted
技术标签:
【中文标题】Erlang中的重复元素列表【英文标题】:List of repeating element in Erlang 【发布时间】:2012-10-10 00:39:54 【问题描述】:我找不到使用 Erlang 库函数创建由重复 N 次的元素 E 组成的列表的方法。当然,写一个是小菜一碟,
repeat(E, N) ->
repeat(E, N, []).
repeat(_E, 0, L) ->
L;
repeat(E, N, L) ->
repeat(E, N-1, [E|L]).
但我希望这是使用一些列表模块功能或其他东西的单线。有什么办法吗?
编辑:好的,当然是这个,
lists:map(fun(_) -> E end, lists:seq(1, N))
但这会创建一个立即丢弃的额外列表。对我来说似乎效率低下,但也许我不是以惯用的方式思考 Erlang。
编辑 2:原来这是一个愚蠢的问题。我只是在列表模块中没有看到 duplicate 函数。
【问题讨论】:
【参考方案1】:我认为erlang中有一个函数可以做到:
lists:duplicate(N,X).
%% and repeat a string like this:
repeat(X,N) ->
lists:flatten(lists:duplicate(N,X)).
【讨论】:
嗯,为什么要扁平化?不正是我正在寻找的重复吗? 对不起,我没有注意到。我想了一个字符串的重复方法。【参考方案2】:列表理解也可以:
> [E || _ <- lists:seq(1,N)].
【讨论】:
以上是关于Erlang中的重复元素列表的主要内容,如果未能解决你的问题,请参考以下文章