如何在 Elixir 中按模数过滤列表

How to filter a list by modulus in Elixir

假设我有一个数组

arr=[1,2,14,1,27]

我想创建一个名为 arr1 的新数组,它将存储 arr 的所有值,当您采用 it.So、

的 modulus 时,这些值将等于 1
arr2=[1,14,1,27]

因为 1 mod 13、14 mod 13 和 27 mod 13 都等于 1.

使用 filtermodulo rem(x, 13) == 1

arr=[1,2,14,1,27]
arr2 = Enum.filter(arr, fn x -> rem(x, 13) == 1 end)
IO.inspect  arr
IO.inspect  arr2

输出:

[1, 2, 14, 1, 27]
[1, 14, 1, 27]

这种任务最好用for/1理解来完成,比Enum.filter/2.

更强大waaaaay
for i <- [1, 2, 14, 1, 27], rem(i, 13) == 1, do: i
#⇒ [1, 14, 1, 27]