【问题标题】:List of repeating element in ErlangErlang中的重复元素列表
【发布时间】: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 函数。

【问题讨论】:

    标签: list erlang


    【解决方案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)].
    

    【讨论】:

      猜你喜欢
      • 2012-11-20
      • 2011-12-15
      • 2016-11-02
      • 2018-04-10
      • 2013-01-30
      • 2016-06-27
      • 2011-09-02
      • 2015-12-16
      相关资源
      最近更新 更多