如何在Elixir中创建具有开始,长度和增量的整数列表?

时间:2016-01-20 16:27:05

标签: elixir

我想生成一个整数列表。我有起始值,增量值和列表长度。

我知道这应该很简单,但我不能破解它。我尝试过列表推导,流函数等等。

以下是我尝试过的以及没有用的内容:

范围允许我选择开始和结束,但不允许选择增量

1..3 |> Enum.to_list()

这个列表理解是有效的,但它是最好的"方式是什么?

start = 1
length = 3
increment = 2
for i <- 0..length-1, do: start + i*increment

3 个答案:

答案 0 :(得分:5)

你可以通过理解来做到这一点:

for x <- 1..10, do: x * 3
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

在上面的示例中,以下是您指定的值:

start = 1
length = 10
increment = 3

负范围需要额外的括号:

for x <- -1..(-10), do: x * 3 
[-3, -6, -9, -12, -15, -18, -21, -24, -27, -30]

答案 1 :(得分:5)

Gazler的答案很棒。

如果您想更加喜欢,可以使用Stream.iterate/2Enum.take/2获得类似结果:

start = 1
length = 10
increment = 3
Stream.iterate(start, &(&1 + increment)) |> Enum.take(length)
#=> [1, 4, 7, 10, 13, 16, 19, 22, 25, 28]

答案 2 :(得分:3)

您也可以使用echo json_encode($arr);

:lists.seq(From, To, Increment)