【问题标题】:index of item in a list列表中项目的索引
【发布时间】:2013-01-06 21:15:51
【问题描述】:

我已经将一个文件读入一个列表,例如文件的格式是:

 blue
 yellow
 green
 red

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

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

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

首先我必须知道它是否存在,然后才能获得它的索引。我也在尝试这样做,而不必创建任何我必须调用的新函数。

感谢您的帮助

【问题讨论】:

  • 见http://stackoverflow.com/questions/1459152/erlang-listsindex-of-function
  • @Rachel Gallen 成功了,谢谢:D
  • @Rachel Gallen 只是 1 个问题,如果项目不存在,我会收到错误消息,这就是为什么我在伪代码中写了“if (item.exists(List, "green")) {"在它尝试获取项目的索引之前。

标签: erlang


【解决方案1】:

一种方法是使用拉链在列表上系上数字:

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,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-15
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 2023-02-11
    • 2013-06-15
    相关资源
    最近更新 更多