Bagaimana saya bisa mencetak indeks daftar tertentu dan, dari daftar daftar?

[["Anne";"Brazil";"42";"\n"];
 ["Bernard";"France";"34";"\n"];
 ["Charlie";"USA";"65";"\n"]]

Contoh: Jika saya ingin mencetak "Brazil" Bagaimana saya bisa mengakses indeksnya?

Terima kasih!

Bersulang!

0
zumuha 5 April 2021, 17:12

1 menjawab

Jawaban Terbaik

Pertanyaan Anda tidak terlalu jelas. Berikut adalah beberapa pengamatan.

Memikirkan daftar OCAML dalam hal indeks bukanlah pendekatan yang baik. Daftar OCAML benar-benar daftar - hanya diakses dalam satu arah saja, dengan waktu linear untuk mengakses satu elemen. Mereka sebenarnya bukan array - dengan akses waktu yang konstan ke elemen apa pun. Beberapa bahasa lain memperlakukan struktur ini seolah-olah mereka sama, tetapi mereka tidak.

Yang tampaknya Anda katakan adalah bahwa Anda memulai dengan nama yang dikenal seperti "Brazil", dan Anda ingin mengakses elemen daftar dengan nama itu. Menempatkan ini secara lebih umum, Anda ingin mengakses elemen daftar dengan properti tertentu.

Satu fungsi standar untuk masalah umum ini adalah List.find. Anda memberikannya fungsi boolean untuk properti yang diinginkan dan daftar. Itu mengembalikan elemen atau meningkatkan pengecualian jika tidak ada elemen seperti itu.

Anda dapat menemukan elemen dengan nama belakang sesuatu seperti ini:

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

let brazil_element = List.find (has_last_name "Brazil") mylist
1
Jeffrey Scofield 5 April 2021, 17:24