【发布时间】:2015-10-17 05:32:29
【问题描述】:
给定两个列表和第三个列表,其中的值映射到前两个的排列,我想创建一个包含 list1 的键、list2 的键和 list3 的值的映射。如果我在循环中,如何在某个索引处获取 list3 的值?
据我所知,使用Enum.at 不是正确的解决方案 - 它会在每次迭代时遍历整个列表。如果我尝试[head | tail] = list3,看起来我不能只为下一个循环设置list3 = tail。
list1 = [1,2]
list2 = [3,4]
list3 = 'wxyz'
Enum.each(list1), fn i ->
Enum.each(list2), fn j ->
# Would like to just chop off the first value of list3 and
# pass the tail into the next iteration
end
end
【问题讨论】:
-
由于无论 Enum.at 如何,我的解决方案都不可行,因此我已将其删除。但是在 Elixir 中编写嵌套循环的惯用方法是使用 Comprehensions。
-
顺便说一句,在这种情况下,您会发现很难做比 O(n) 性能更好的事情,因为 Elixir 列表实际上是一个链表。
标签: elixir