【问题标题】:Elixir, replace some values in list 1 with values from list 2 [closed]Elixir,用列表2中的值替换列表1中的一些值[关闭]
【发布时间】:2020-10-12 08:12:54
【问题描述】:

给定两个列表 x 和 y,两者长度相同

list x
[[], ["replaceTwo"], [], ["replaceFour"], []]

list y
[["one"], ["two"], ["three"], ["four"], ["five"]]

如何创建另一个具有列表 x 值的列表,但在该值为空列表的情况下,它应该具有来自列表 y 的相同索引的值?

像这样

list z =[["one"], ["replaceTwo"], ["three"], ["replaceFour"], ["five"]]

【问题讨论】:

  • 你能仔细检查你的语法吗?这些不是列表。它们是列表列表吗?所有列表都应该有方括号吗?例如[[], ["replaceTwo"], [], ["replaceFour"], []]
  • @sbacarob 是列表列表,添加括号

标签: functional-programming elixir


【解决方案1】:

当第一个列表中的元素为空列表时,您可以使用 Enum.zip 合并列表,然后使用 Enum.map 与模式匹配从第二个列表中抓取元素,如下所示:

defmodule Example do
  def unite_and_replace(list1, list2) do
    list1
    |> Enum.zip(list2)
    |> Enum.map(fn {[], list2_element} -> list2_element
                   {list1_element, _} -> list1_element end)
  end
end

iex(1)> list1 = [[], ["replaceTwo"], [], ["replaceFour"], []]
iex(2)> list2 = [["one"], ["two"], ["three"], ["four"], ["five"]]

iex(3)> Example.unite_and_replace list1, list2
[["one"], ["replaceTwo"], ["three"], ["replaceFour"], ["five"]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    相关资源
    最近更新 更多