我想一次迭代两个列表,但不知道如何。for 循环允许您将多个列表用作嵌套的 for 循环,我对 不太熟悉Enum
,但也许那里有解决方案。
Python 已经zip(list_1,list_2)
并enumerate(list_1)
完成了这个
在 Tcl 中对我来说更容易:
% foreach var1 [list 1 3] var2 [list 2 4] {
puts "$var1 $var2"
}
1 2
3 4
但我无法弄清楚如何在 Elixir 中做到这一点。
我想这样做的原因是因为我有一个这样的地图列表
[%{"a" => "1539", "b" => "300"},
%{"a" => "4095", "b" => "0"},
%{"a" => "5371", "b" => "0"},
%{"a" => "7524", "b" => "0"},
%{"a" => "8267", "b" => "27"}]
我有一个相同大小的项目列表:
["a","b","c","d","e"]
如果地图中的元素之一处于特定条件(不是 0),我想将它们一起循环运行以替换地图中的项目:
[%{"a" => "a", "b" => "300"}, # notice the change in element "a"
%{"a" => "4095", "b" => "0"},
%{"a" => "5371", "b" => "0"},
%{"a" => "7524", "b" => "0"},
%{"a" => "e", "b" => "27"}] # notice the change in element "a"
反正。有人可以帮助我理解 enumerable 或如何在 elixir 中迭代两个列表吗?
你可以在 Elixir 中使用Enum.zip/2
和Enum.map/2
来完成同样的事情:
list_of_maps
|> Enum.zip(list_of_items)
|> Enum.map(fn {map, item} ->
if (map["b"] == "0"), do: map, else: Map.put(map, "a", item)
end)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句