您如何简单地从本示例的末尾删除20?
[46, 238, 64, 30, 105, 136, 98, 75, 23, 157, 11, 20]
Run Code Online (Sandbox Code Playgroud)
我所知道的@mudasobwa最快的解决
方案1:
x |> Enum.reverse() |> tl() |> Enum.reverse()
Run Code Online (Sandbox Code Playgroud)
其他一些解决方案:
解决方案2:
[k] = Enum.chunk(x, length(x)-1)
Run Code Online (Sandbox Code Playgroud)
解决方案3:
List.delete_at(x, length(x)-1)
Run Code Online (Sandbox Code Playgroud)
解决方案4:
x |> List.to_tuple() |> Tuple.delete_at(length(x)-1) |> Tuple.to_list
Run Code Online (Sandbox Code Playgroud)
一个更有趣的问题是,如何最快地做到这一点?让我们进行基准测试!
我使用Benchee得到了以下结果,每个解决方案计算了50000次,并且使用了Enum.to_list(1..10_000)
Name ips average deviation median 99th %
mudasobwa's solution 14.80 K 67.57 ?s ±34.17% 79 ?s 91 ?s
solution 1 14.79 K 67.59 ?s ±33.96% 79 ?s 91 ?s
solution 4 10.71 K 93.38 ?s ±32.67% 81 ?s 201 ?s
Roman Rabinovich's solution 8.45 K 118.33 ?s ±18.27% 118 ?s 171 ?s
OneSneakyMofo's solution 5.07 K 197.34 ?s ±13.60% 193 ?s 331 ?s
dawner's solution 4.57 K 219.00 ?s ±11.87% 216 ?s 256.23 ?s
solution 3 3.41 K 292.91 ?s ±20.01% 290 ?s 506.64 ?s
solution 2 0.83 K 1205.52 ?s ±22.25% 1105 ?s 2061.77 ?s
Comparison:
mudasobwa's solution 14.80 K
solution 1 14.79 K - 1.00x slower
solution 4 10.71 K - 1.38x slower
Roman Rabinovich's solution 8.45 K - 1.75x slower
OneSneakyMofo's solution 5.07 K - 2.92x slower
dawner's solution 4.57 K - 3.24x slower
solution 3 3.41 K - 4.33x slower
solution 2 0.83 K - 17.84x slower
Run Code Online (Sandbox Code Playgroud)
小智 6
你可以这样做:
List.pop_at(x, -1)
{20, [46, 238, 64, 30, 105, 136, 98, 75, 23, 157, 11]}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1150 次 |
| 最近记录: |