List 如何在OCaml中打印列表列表的特定索引?

List 如何在OCaml中打印列表列表的特定索引?,list,ocaml,List,Ocaml,如何打印列表的特定索引和列表的特定索引 [["Anne";"Brazil";"42";"\n"]; ["Bernard";"France";"34";"\n"]; ["Charlie";"USA";"65";"\n"]] 例如: 如果我想打印“巴西”,我

如何打印列表的特定索引和列表的特定索引

[["Anne";"Brazil";"42";"\n"];
 ["Bernard";"France";"34";"\n"];
 ["Charlie";"USA";"65";"\n"]]
例如: 如果我想打印“巴西”,我如何访问它的索引

谢谢大家!


干杯

你的问题不是很清楚。以下是一些观察结果

从索引的角度考虑OCaml列表不是一个好方法。OCaml列表实际上是列表——只在一个方向上访问,访问任何一个元素的时间都是线性的。它们实际上不是数组——对任何元素都有固定时间的访问。其他一些语言将这些结构视为相同的,但事实并非如此

您似乎想说的是,您是从一个已知的名称开始的,比如“巴西”,并且您希望使用该名称访问列表元素。更一般地说,您希望访问具有特定属性的列表元素

解决此一般问题的一个标准函数是
List.find
。您可以为它指定所需属性的布尔函数和列表。它返回元素,如果没有这样的元素,则引发异常

您可以按姓氏查找元素,如下所示:

let has_las_name n l =
    match l with
    | _ :: lname :: _ -> lname = n
    | _ -> false

let brazil_element = List.find (has_last_name "Brazil") mylist

如果你想根据他们的索引访问元素,你应该考虑使用<代码>数组< /代码>参见:一个记录可能会更好。