Как получить индекс элемента списка в эликсире? - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть

>> list = ["a","b","c"]

, и мне нужно получить индекс элементов и создать новый список, следующий за

>> list_2 = [[1,"a"], [2,"b"], [3,c]]

, чтобы создать новый список, который я использовал

lista = Enum.flat_map(list, fn x -> [index,x] end)

но я не могу найти такую ​​функцию, как получить значение "index"

Ответы [ 2 ]

1 голос
/ 19 сентября 2019

Enum.zip/2 ваш друг здесь.

list = ~w[a b c]
#⇒ ["a", "b", "c"]

list_2 = Enum.zip(1..3, list)
#⇒ [{1, "a"}, {2, "b"}, {3, "c"}]

или, если размер неизвестен заранее, вы можете

Enum.zip(Stream.iterate(1, & &1 + 1), list)
#⇒ [{1, "a"}, {2, "b"}, {3, "c"}]

, чтобы получить спискиа не кортежи, просто отобразите результат

1
|> Stream.iterate(& &1+1)
|> Enum.zip(list)
|> Enum.map(&Tuple.to_list/1)
#⇒ [[1, "a"], [2, "b"], [3, "c"]]

Другой способ - использовать Enum.with_index/1

list
|> Enum.with_index(1)
|> Enum.map(fn {e, i} -> [i, e] end)
#⇒ [[1, "a"], [2, "b"], [3, "c"]]
1 голос
/ 19 сентября 2019
list = ["a","b","c"]
list_2 = Enum.with_index(list)

т

[{"a", 0}, {"b", 1}, {"c", 2}]
...