【问题标题】:How to retrieve the last 2 items of a list in erlang如何在erlang中检索列表的最后两项
【发布时间】:2015-12-26 15:33:52
【问题描述】:

我正在寻找一个函数,它可以在 erlang 中检索列表的最后两个元素。

我试过了

lists:nthtail( lists:length(List) - 2, List)

运气不好,感谢任何帮助。

【问题讨论】:

    标签: erlang


    【解决方案1】:

    您应该使用 length/1 而不是 lists:length/1 不存在的:

    1> L = [1,2,3,4].
    [1,2,3,4]
    2> lists:nthtail(length(L)-2, L).
    [3,4]
    

    或者你可以使用lists:reverse/1和模式匹配:

    1> L = [1,2,3,4].
    [1,2,3,4]
    2> [A, B | _] = lists:reverse(L).
    [4,3,2,1]
    3> A.
    4
    4> B.
    3
    

    【讨论】:

      【解决方案2】:

      还有另一种方法:

      last_two([A, B] = L) -> L;
      last_two([_|L]) -> last_two(L).
      

      它在堆上产生的垃圾比:

      [B, A | _] = lists:reverse(L), [A, B].
      

      【讨论】:

        猜你喜欢
        • 2010-10-14
        • 1970-01-01
        • 2015-12-08
        • 2013-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-11
        • 2014-12-09
        相关资源
        最近更新 更多