2016-07-20 12 views

Antwort

25

Verwendung Enum.take/2 mit einem negativen Wert:

iex(1)> list = [1, 2, 4, 5, 6, 7, 8, 9, 9, 88, 88] 
iex(2)> Enum.take(list, -4) |> IO.inspect(charlists: :as_lists) 
[9, 9, 88, 88] 

take (enumerable, count)

[...] count muss eine ganze Zahl sein. Wenn ein negatives count angegeben wird, werden die letzten count Werte genommen. [...]

+1

Ich würde diese Methode für sehr lange Listen nicht vorschlagen. Es wird mit der Zeit zunehmen, je länger die Listen werden, wenn Sie die Werte vom Ende her erfassen. – mjwrazor

+0

@mjwrazor gibt es einen besseren Weg? – Dogbert

+1

Verwenden Sie MapSet, [Timing] (https://gist.github.com/lexmag/32977ce8fd7cb44ddefa) 'list = MapSet.new ([1, 2, 4, 5, 6, 7, 8, 9, 9, 88, 88]) |> Enum.take (-4) '. Für Listen mit normaler Größe ist das in Ordnung, aber wenn Sie eine Liste mit 10 Millionen Elementen haben, verwenden Sie MapSet. – mjwrazor

Verwandte Themen