0
我有一个有趣的情况。我正在循环列表几次,我不知道如何生成我想要的列表。我基本上试图按照外部列表的顺序在元组列表中排列第二个元组。在elixir中循环列表而不创建零值
aclist = [{2,4},{2,6},{4,1},{4,8},{1, 2},{1,5},{3,3},{3,7}]
plist = [1,2,3,4]
newplist =
for pid <- plist do
Enum.map(aclist, fn({p_id,c_id}) ->
if p_id == pid do
c_id
end
end)
end
从这个代码的输出是:
[[2, 5, nil, nil, nil, nil, nil, nil], [nil, nil, 4, 6, nil, nil, nil, nil],
[nil, nil, nil, nil, 3, 7, nil, nil], [nil, nil, nil, nil, nil, nil, 1, 8]]
我需要的输出为[2,5,4,6,3,7,1,8]
,但会再次要求我遍历它在一个嵌套循环来拉这些号码的开出。所以很明显,我错过了一些东西,我如何循环并在第一次提取正确的数据?
我也喜欢'for'。这一行并没有真正传达出发生了什么=>'Enum.map(aclist,fn {p,ac} - > {Enum.find_index(plist,&(&1 == p)),ac} end) > Enum.sort_by(&elem(&1,0))|> Enum.map(&elem(&1,1))' – amorphid