Erlang 列表中项目的索引

Erlang 列表中项目的索引,erlang,Erlang,我在列表中读取了一个文件,例如,该文件的格式为: blue yellow green red 现在我想找到项目“绿色”的位置(索引),如果操作正确,结果将是“3”,因为它是列表中的第三个项目 也许我不擅长搜索谷歌,但我在任何地方都找不到解决方案:/因此,整个想法是: if (item.exists(List, "green")) { index = indexOf(List, "green") } 首先,在我得到它的索引之前,我必须知道它是否存在。另外,我正在尝试在不需要调用

我在列表中读取了一个文件,例如,该文件的格式为:

 blue
 yellow
 green
 red
现在我想找到项目“绿色”的位置(索引),如果操作正确,结果将是“3”,因为它是列表中的第三个项目

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

if (item.exists(List, "green")) {
    index = indexOf(List, "green")
}
首先,在我得到它的索引之前,我必须知道它是否存在。另外,我正在尝试在不需要调用任何新函数的情况下执行此操作


感谢您的帮助

一种方法是使用拉链在列表中添加号码:

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,

seehttp://stackoverflow.com/questions/1459152/erlang-listsindex-of-function@Rachel Gallen成功了谢谢:D@RachelGallen只是一个问题,如果项不存在,我会得到一个错误,这就是为什么在psudo代码中我在尝试获取项的索引之前写了“if(item.exists(List,“green”){”。