列表中项目的索引

时间:2013-01-23 11:44:47

标签: erlang

我已将文件读入列表,例如文件的格式为:

 blue
 yellow
 green
 red

现在我想找到项目“绿色”的位置(索引),如果正确完成,结果将是“3”,因为它是列表中的第3项。

也许我不擅长搜索谷歌,但我无法在任何地方找到解决方案:/所以整个想法是:

if (item.exists(List, "green")) {
    index = indexOf(List, "green")
}

首先我必须知道它是否存在才能得到它的索引。此外,我正在努力做到这一点,而不必做任何我必须打电话的新功能。

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

一种方法是使用拉链来装饰列表中的数字:

L = [blue, yellow, green, red],
case lists:keyfind(green, 1, lists:zip(L, lists:seq(1, length(L))) of
  false -> not_there;
  {green, Idx} -> {found, Idx}
end,
...

(未经测试)

问题是你想要一个索引。我们很少(如果有的话)在erlang程序中使用索引。相反,我们可能将列表表示为一组:

Set = sets:from_list(L),
case sets:is_element(green, Set) of
   true -> ...;
   false -> ...
end,