F # - รายการ

ใน F # รายการคือชุดขององค์ประกอบประเภทเดียวกันที่เรียงลำดับและไม่เปลี่ยนรูป มีขอบเขตเทียบเท่ากับโครงสร้างข้อมูลรายการที่เชื่อมโยง

โมดูล F # Microsoft.FSharp.Collections.List,มีการดำเนินการทั่วไปในรายการ อย่างไรก็ตาม F # จะนำเข้าโมดูลนี้โดยอัตโนมัติและทำให้ทุกแอปพลิเคชัน F # สามารถเข้าถึงได้

การสร้างและเริ่มต้นรายการ

ต่อไปนี้เป็นวิธีต่างๆในการสร้างรายการ -

  • การใช้รายการ literals.

  • การใช้ cons (: :) ตัวดำเนินการ

  • ใช้ List.init วิธีการของโมดูลรายการ

  • ใช้ syntactic constructs เรียกว่า List Comprehensions.

แสดงรายการตัวอักษร

ในวิธีนี้คุณเพียงระบุลำดับค่าที่คั่นด้วยอัฒภาคในวงเล็บเหลี่ยม ตัวอย่างเช่น -

let list1 = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]

ข้อเสีย (: :) Operator

ด้วยวิธีนี้คุณสามารถเพิ่มค่าบางอย่างได้โดยการเติมเงินล่วงหน้าหรือ cons-ingไปยังรายการที่มีอยู่โดยใช้ตัวดำเนินการ :: ตัวอย่างเช่น -

let list2 = 1::2::3::4::5::6::7::8::9::10::[];;

[] หมายถึงรายการว่าง

วิธีเริ่มรายการ

เมธอด List.init ของโมดูลรายการมักใช้ในการสร้างรายการ วิธีนี้มีประเภท -

val init : int -> (int -> 'T) -> 'T list

อาร์กิวเมนต์แรกคือความยาวที่ต้องการของรายการใหม่และอาร์กิวเมนต์ที่สองคือฟังก์ชัน initializer ซึ่งสร้างรายการในรายการ

ตัวอย่างเช่น,

let list5 = List.init 5 (fun index -> (index, index * index, index * index * index))

ที่นี่ฟังก์ชันดัชนีจะสร้างรายการ

แสดงรายการความเข้าใจ

ความเข้าใจในรายการเป็นโครงสร้างทางวากยสัมพันธ์พิเศษที่ใช้ในการสร้างรายการ

ไวยากรณ์ความเข้าใจของรายการ F # มีสองรูปแบบ - ช่วงและตัวสร้าง

ช่วงมีโครงสร้าง - [start .. end] และ [start .. step .. end]

ตัวอย่างเช่น,

let list3 = [1 .. 10]

เครื่องกำเนิดไฟฟ้ามีโครงสร้าง - [สำหรับ x ในคอลเลกชันทำ ... อัตราผลตอบแทน]

ตัวอย่างเช่น,

let list6 = [ for a in 1 .. 10 do yield (a * a) ]

ในฐานะที่เป็น yield คำหลักผลักค่าเดียวลงในรายการคำหลัก yield!, ผลักดันคอลเลกชันของค่าลงในรายการ

ฟังก์ชันต่อไปนี้แสดงให้เห็นถึงวิธีการข้างต้น -

ตัวอย่าง

(* using list literals *)
let list1 = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]
printfn "The list: %A" list1

(*using cons operator *)
let list2 = 1 :: 2 :: 3 :: []
printfn "The list: %A" list2

(* using range constructs*)
let list3 = [1 .. 10]
printfn "The list: %A" list3

(* using range constructs *)
let list4 = ['a' .. 'm']
printfn "The list: %A" list4

(* using init method *)
let list5 = List.init 5 (fun index -> (index, index * index, index * index * index))
printfn "The list: %A" list5

(* using yield operator *)
let list6 = [ for a in 1 .. 10 do yield (a * a) ]
printfn "The list: %A" list6

(* using yield operator *)
let list7 = [ for a in 1 .. 100 do if a % 3 = 0 && a % 5 = 0 then yield a]
printfn "The list: %A" list7

(* using yield! operator *)
let list8 = [for a in 1 .. 3 do yield! [ a .. a + 3 ] ]
printfn "The list: %A" list8

เมื่อคุณคอมไพล์และรันโปรแกรมจะให้ผลลัพธ์ดังต่อไปนี้ -

The list: [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]
The list: [1; 2; 3]
The list: [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]
The list: ['a'; 'b'; 'c'; 'd'; 'e'; 'f'; 'g'; 'h'; 'i'; 'j'; 'k'; 'l'; 'm']
The list: [(0, 0, 0); (1, 1, 1); (2, 4, 8); (3, 9, 27); (4, 16, 64)]
The list: [1; 4; 9; 16; 25; 36; 49; 64; 81; 100]
The list: [15; 30; 45; 60; 75; 90]
The list: [1; 2; 3; 4; 2; 3; 4; 5; 3; 4; 5; 6]

คุณสมบัติของประเภทข้อมูลรายการ

ตารางต่อไปนี้แสดงคุณสมบัติต่างๆของชนิดข้อมูลรายการ -

ทรัพย์สิน ประเภท คำอธิบาย
ศีรษะ 'ท องค์ประกอบแรก
ว่างเปล่า รายการ 'T คุณสมบัติคงที่ที่ส่งคืนรายการว่างของชนิดที่เหมาะสม
มันว่างเปล่า บูล true หากรายการไม่มีองค์ประกอบ
สิ่งของ 'ท องค์ประกอบที่ดัชนีที่ระบุ (อิงศูนย์)
ความยาว int จำนวนองค์ประกอบ
หาง รายการ 'T รายการที่ไม่มีองค์ประกอบแรก

ตัวอย่างต่อไปนี้แสดงการใช้คุณสมบัติเหล่านี้ -

ตัวอย่าง

let list1 = [ 2; 4; 6; 8; 10; 12; 14; 16 ]

// Use of Properties
printfn "list1.IsEmpty is %b" (list1.IsEmpty)
printfn "list1.Length is %d" (list1.Length)
printfn "list1.Head is %d" (list1.Head)
printfn "list1.Tail.Head is %d" (list1.Tail.Head)
printfn "list1.Tail.Tail.Head is %d" (list1.Tail.Tail.Head)
printfn "list1.Item(1) is %d" (list1.Item(1))

เมื่อคุณคอมไพล์และรันโปรแกรมจะให้ผลลัพธ์ดังต่อไปนี้ -

list1.IsEmpty is false
list1.Length is 8
list1.Head is 2
list1.Tail.Head is 4
list1.Tail.Tail.Head is 6
list1.Item(1) is 4

ตัวดำเนินการพื้นฐานในรายการ

ตารางต่อไปนี้แสดงการดำเนินการพื้นฐานเกี่ยวกับชนิดข้อมูลรายการ -

มูลค่า คำอธิบาย
ผนวก: 'T list →' T list → 'T list ส่งคืนรายการใหม่ที่มีองค์ประกอบของรายการแรกตามด้วยองค์ประกอบของรายการที่สอง
ค่าเฉลี่ย: รายการ T → ^ T ส่งคืนค่าเฉลี่ยขององค์ประกอบในรายการ
averageBy: ('T → ^ U) →' T list → ^ U ส่งกลับค่าเฉลี่ยขององค์ประกอบที่สร้างขึ้นโดยใช้ฟังก์ชันกับแต่ละองค์ประกอบของรายการ
เลือก: ('T →' ตัวเลือก U) → 'T list →' รายการ U ใช้ฟังก์ชันที่กำหนดกับแต่ละองค์ประกอบของรายการ ส่งคืนรายการที่ประกอบด้วยผลลัพธ์สำหรับแต่ละองค์ประกอบที่ฟังก์ชันส่งคืนSome.
รวบรวม: ('T →' รายการ U) → 'T รายการ→' รายการ U สำหรับแต่ละองค์ประกอบของรายการให้ใช้ฟังก์ชันที่กำหนด เชื่อมต่อผลลัพธ์ทั้งหมดและส่งคืนรายการที่รวมกัน
concat: seq <'T list> →' T list ส่งคืนรายการใหม่ที่มีองค์ประกอบของแต่ละรายการตามลำดับ
ว่างเปล่า: รายการ T ส่งคืนรายการว่างของประเภทที่กำหนด
มีอยู่: ('T → bool) →' T list → bool ทดสอบว่าองค์ประกอบใดของรายการตรงตามเพรดิเคตที่กำหนดหรือไม่
มีอยู่ 2: ('T1 →' T2 →บูล) → 'รายการ T1 →' รายการ T2 →บูล ทดสอบว่าคู่ขององค์ประกอบที่เกี่ยวข้องของรายการตรงตามเพรดิเคตที่กำหนดหรือไม่
ฟิลเตอร์: ('T → bool) →' T list → 'T list ส่งคืนคอลเล็กชันใหม่ที่มีเฉพาะองค์ประกอบของคอลเล็กชันที่เพรดิเคตที่ระบุส่งคืน true.
ค้นหา: ('T → bool) →' T list → 'T ส่งคืนองค์ประกอบแรกที่ฟังก์ชันที่กำหนดส่งคืน true.
findIndex: ('T → bool) →' T list → int ส่งคืนดัชนีขององค์ประกอบแรกในรายการที่ตรงตามเพรดิเคตที่กำหนด
พับ: ('State →' T → 'State) →' State → 'T list →' State ใช้ฟังก์ชันกับแต่ละองค์ประกอบของคอลเลกชันโดยทำเธรดอาร์กิวเมนต์ตัวสะสมผ่านการคำนวณ ฟังก์ชันนี้รับอาร์กิวเมนต์ที่สองและใช้ฟังก์ชันกับมันและองค์ประกอบแรกของรายการ จากนั้นจะส่งผ่านผลลัพธ์นี้ไปยังฟังก์ชันพร้อมกับองค์ประกอบที่สองและอื่น ๆ สุดท้ายก็ส่งกลับผลลัพธ์สุดท้าย หากฟังก์ชันอินพุตคือ f และองค์ประกอบคือ i0 ... iN ฟังก์ชันนี้จะคำนวณ f (... (fs i0) i1 ... ) iN
fold2: ('State →' T1 → 'T2 →' State) → 'State →' T1 list → 'T2 list →' State ใช้ฟังก์ชันกับองค์ประกอบที่สอดคล้องกันของสองคอลเลกชันโดยทำเธรดอาร์กิวเมนต์ตัวสะสมผ่านการคำนวณ คอลเล็กชันต้องมีขนาดเท่ากัน หากฟังก์ชันอินพุตเป็น f และองค์ประกอบคือ i0 ... iN และ j0 ... jN ฟังก์ชันนี้จะคำนวณ f (... (fs i0 j0) ... ) iN jN
foldBack: ('T →' State → 'State) →' T list → 'State →' State ใช้ฟังก์ชันกับแต่ละองค์ประกอบของคอลเลกชันโดยทำเธรดอาร์กิวเมนต์ตัวสะสมผ่านการคำนวณ ถ้าฟังก์ชันอินพุต isf และอิลิเมนต์คือ i0 ... iN ให้คำนวณ f i0 (... (f iN s))
foldBack2: ('T1 →' T2 → 'รัฐ→' ​​รัฐ) → 'รายการ T1 →' รายการ T2 → 'รัฐ→' ​​รัฐ ใช้ฟังก์ชันกับองค์ประกอบที่สอดคล้องกันของสองคอลเลกชันโดยทำเธรดอาร์กิวเมนต์ตัวสะสมผ่านการคำนวณ คอลเล็กชันต้องมีขนาดเท่ากัน หากฟังก์ชันอินพุตคือ f และองค์ประกอบคือ i0 ... iN และ j0 ... jN ฟังก์ชันนี้จะคำนวณ f i0 j0 (... (f iN jN s))
forall: ('T → bool) →' T list → bool ทดสอบว่าองค์ประกอบทั้งหมดของคอลเล็กชันตรงตามเพรดิเคตที่กำหนดหรือไม่
forall2: ('T1 →' T2 → bool) → 'รายการ T1 →' รายการ T2 →บูล ทดสอบว่าองค์ประกอบที่เกี่ยวข้องทั้งหมดของคอลเลกชันตรงตามเพรดิเคตที่กำหนดหรือไม่
หัว: 'T list →' T ส่งคืนองค์ประกอบแรกของรายการ
init: int → (int → 'T) →' รายการ T สร้างรายการโดยเรียกตัวสร้างที่กำหนดในแต่ละดัชนี
isEmpty: 'T list → bool ผลตอบแทน true หากรายการไม่มีองค์ประกอบ false มิฉะนั้น.
iter: ('T →หน่วย) →' T รายการ→หน่วย ใช้ฟังก์ชันที่กำหนดกับแต่ละองค์ประกอบของคอลเล็กชัน
iter2: ('T1 →' T2 →หน่วย) → 'รายการ T1 →' รายการ T2 →หน่วย ใช้ฟังก์ชันที่กำหนดกับสองคอลเลกชันพร้อมกัน คอลเลกชันต้องมีขนาดเท่ากัน
iteri: (int → 'T →หน่วย) →' T รายการ→หน่วย ใช้ฟังก์ชันที่กำหนดกับแต่ละองค์ประกอบของคอลเล็กชัน จำนวนเต็มที่ส่งผ่านไปยังฟังก์ชันบ่งชี้ดัชนีขององค์ประกอบ
iteri2: (int → 'T1 →' T2 → unit) → 'T1 list →' T2 list → unit ใช้ฟังก์ชันที่กำหนดกับสองคอลเลกชันพร้อมกัน คอลเลกชันต้องมีขนาดเท่ากัน จำนวนเต็มที่ส่งผ่านไปยังฟังก์ชันบ่งชี้ดัชนีขององค์ประกอบ
ความยาว: 'T list → int ส่งกลับความยาวของรายการ
แผนที่: ('T →' U) → 'T list →' รายการ U สร้างคอลเล็กชันใหม่ที่มีองค์ประกอบซึ่งเป็นผลลัพธ์ของการใช้ฟังก์ชันที่กำหนดกับแต่ละองค์ประกอบของคอลเล็กชัน
map2: ('T1 →' T2 → 'U) →' รายการ T1 → 'รายการ T2 →' รายการ U สร้างคอลเล็กชันใหม่ที่มีองค์ประกอบเป็นผลลัพธ์ของการใช้ฟังก์ชันที่กำหนดกับองค์ประกอบที่เกี่ยวข้องของทั้งสองคอลเลคชันแบบคู่กัน
map3: ('T1 →' T2 → 'T3 →' U) → 'รายการ T1 →' รายการ T2 → 'รายการ T3 →' รายการ U สร้างคอลเลกชันใหม่ที่มีองค์ประกอบเป็นผลมาจากการใช้ฟังก์ชันที่กำหนดกับองค์ประกอบที่เกี่ยวข้องของทั้งสามคอลเลกชันพร้อมกัน
mapi: (int → 'T →' U) → 'T list →' รายการ U สร้างคอลเล็กชันใหม่ที่มีองค์ประกอบซึ่งเป็นผลลัพธ์ของการใช้ฟังก์ชันที่กำหนดกับแต่ละองค์ประกอบของคอลเล็กชัน ดัชนีจำนวนเต็มที่ส่งผ่านไปยังฟังก์ชันบ่งชี้ดัชนี (จาก 0) ขององค์ประกอบที่ถูกเปลี่ยน
mapi2: (int → 'T1 →' T2 → 'U) →' รายการ T1 → 'รายการ T2 →' รายการ U เช่นเดียวกับ List.mapi แต่การแมปองค์ประกอบที่เกี่ยวข้องจากสองรายการที่มีความยาวเท่ากัน
สูงสุด: 'T list →' T ส่งคืนองค์ประกอบที่ยิ่งใหญ่ที่สุดของรายการทั้งหมดโดยเปรียบเทียบโดยใช้ Operators.max
maxBy: ('T →' U) → 'T list →' T ส่งคืนองค์ประกอบที่ยิ่งใหญ่ที่สุดของรายการทั้งหมดโดยเปรียบเทียบโดยใช้ Operators.max กับผลลัพธ์ของฟังก์ชัน
นาที: 'T list →' T ส่งคืนค่าต่ำสุดขององค์ประกอบทั้งหมดของรายการเปรียบเทียบโดยใช้ Operators.min
minBy: ('T →' U) → 'T list →' T ส่งคืนค่าต่ำสุดขององค์ประกอบทั้งหมดของรายการเปรียบเทียบโดยใช้ Operators.min กับผลลัพธ์ของฟังก์ชัน
ที่ n: 'T list → int →' T ดัชนีลงในรายการ องค์ประกอบแรกมีดัชนี 0
ofArray: รายการ 'T [] →' T สร้างรายการจากอาร์เรย์ที่กำหนด
ofSeq: seq <'T> →' T รายการ สร้างรายการใหม่จากวัตถุที่ระบุได้
พาร์ติชัน: ('T → bool) →รายการ' T * 'T แยกคอลเลกชันออกเป็นสองคอลเลกชันโดยมีองค์ประกอบที่เพรดิเคตส่งกลับ true และ false ตามลำดับ
อนุญาต: (int → int) → 'T list →' T list ส่งคืนรายการที่มีองค์ประกอบทั้งหมดที่ปรับเปลี่ยนตามการเรียงสับเปลี่ยนที่ระบุ
เลือก: ('T →' ตัวเลือก U) → 'T list →' U ใช้ฟังก์ชันที่กำหนดกับองค์ประกอบที่ต่อเนื่องส่งคืนผลลัพธ์แรกที่ฟังก์ชันส่งคืน Some เพื่อคุณค่าบางอย่าง
ลด: ('T →' T → 'T) →' T list → 'T ใช้ฟังก์ชันกับแต่ละองค์ประกอบของคอลเลกชันโดยทำเธรดอาร์กิวเมนต์ตัวสะสมผ่านการคำนวณ ฟังก์ชันนี้ใช้ฟังก์ชันที่ระบุกับสององค์ประกอบแรกของรายการ จากนั้นจะส่งผลลัพธ์นี้ไปยังฟังก์ชันพร้อมกับองค์ประกอบที่สามและอื่น ๆ สุดท้ายก็ส่งกลับผลลัพธ์สุดท้าย หากฟังก์ชันอินพุตคือ f และองค์ประกอบคือ i0 ... iN ฟังก์ชันนี้จะคำนวณ f (... (f i0 i1) i2 ... ) iN
ลดกลับ: ('T →' T → 'T) →' T list → 'T ใช้ฟังก์ชันกับแต่ละองค์ประกอบของคอลเลกชันโดยทำเธรดอาร์กิวเมนต์ตัวสะสมผ่านการคำนวณ หากฟังก์ชันอินพุต isf และองค์ประกอบคือ i0 ... iN ฟังก์ชันนี้จะคำนวณ f i0 (... (f iN-1 iN))
ทำซ้ำ: (int → 'T →' T รายการ) สร้างรายการโดยเรียกตัวสร้างที่กำหนดในแต่ละดัชนี
rev: รายการ 'T →' T ส่งคืนรายการใหม่ที่มีองค์ประกอบในลำดับย้อนกลับ
สแกน: ('State →' T → 'State) →' State → 'T list →' รายการสถานะ ใช้ฟังก์ชันกับแต่ละองค์ประกอบของคอลเลกชันโดยทำเธรดอาร์กิวเมนต์ตัวสะสมผ่านการคำนวณ ฟังก์ชันนี้รับอาร์กิวเมนต์ที่สองและใช้ฟังก์ชันที่ระบุและองค์ประกอบแรกของรายการ จากนั้นจะส่งผลลัพธ์นี้ไปยังฟังก์ชันพร้อมกับองค์ประกอบที่สองและอื่น ๆ สุดท้ายจะส่งคืนรายการผลลัพธ์ระดับกลางและผลลัพธ์สุดท้าย
scanBack: ('T →' State → 'State) →' T list → 'State →' รายการสถานะ เช่นเดียวกับ foldBack แต่ส่งกลับทั้งผลลัพธ์ขั้นกลางและผลลัพธ์สุดท้าย
เรียงลำดับ: รายการ 'T →' รายการ T จัดเรียงรายการที่กำหนดโดยใช้ Operators.compare
sortBy: ('T →' Key) → 'T list →' T list จัดเรียงรายการที่กำหนดโดยใช้คีย์ที่กำหนดโดยการฉายภาพที่กำหนด คีย์ถูกเปรียบเทียบโดยใช้ Operators.compare
sortWith: ('T →' T → int) → 'T list →' รายการ T จัดเรียงรายการที่กำหนดโดยใช้ฟังก์ชันการเปรียบเทียบที่กำหนด
ผลรวม: ^ T รายการ→ ^ T ส่งคืนผลรวมขององค์ประกอบในรายการ
sumBy: ('T → ^ U) →' T list → ^ U ส่งกลับผลรวมของผลลัพธ์ที่สร้างขึ้นโดยใช้ฟังก์ชันกับแต่ละองค์ประกอบของรายการ
หาง: รายการ T →รายการ T ส่งคืนรายการอินพุตที่ไม่มีองค์ประกอบแรก
toArray: 'T รายการ→' T [] สร้างอาร์เรย์จากรายการที่กำหนด
toSeq: 'T list → seq <' T> ดูรายการที่กำหนดเป็นลำดับ
tryFind: ('T → bool) →' T list → 'ตัวเลือก T ส่งคืนองค์ประกอบแรกที่ฟังก์ชันที่กำหนดส่งคืน true. กลับNone หากไม่มีองค์ประกอบดังกล่าว
tryFindIndex: ('T → bool) →' T list →ตัวเลือก int ส่งคืนดัชนีขององค์ประกอบแรกในรายการที่ตรงตามเพรดิเคตที่กำหนด กลับNone หากไม่มีองค์ประกอบดังกล่าว
tryPick: (ตัวเลือก 'T →' U) → 'T list →' ตัวเลือก U ใช้ฟังก์ชันที่กำหนดกับองค์ประกอบที่ต่อเนื่องส่งคืนผลลัพธ์แรกที่ฟังก์ชันส่งคืน Someเพื่อคุณค่าบางอย่าง หากไม่มีองค์ประกอบดังกล่าวให้ส่งคืนNone.
เปิดเครื่องรูด: ('T1 *' T2) รายการ→ 'รายการ T1 *' รายการ T2 แบ่งรายชื่อคู่ออกเป็นสองรายการ
unzip3: ('T1 *' T2 * 'T3) รายการ→' รายการ T1 * 'รายการ T2 *' รายการ T3 แบ่งรายชื่อสามรายการออกเป็นสามรายการ
zip: รายการ 'T1 →' รายการ T2 → ('T1 *' T2) รวมสองรายการเป็นรายการคู่ ทั้งสองรายการต้องมีความยาวเท่ากัน
zip3: รายการ 'T1 →' รายการ T2 → 'รายการ T3 → (' T1 * 'T2 *' T3) รวมสามรายการเป็นรายการสามเท่า รายการต้องมีความยาวเท่ากัน

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้ฟังก์ชันข้างต้น -

ตัวอย่าง 1

โปรแกรมนี้แสดงการย้อนกลับรายการแบบวนซ้ำ -

let list1 = [ 2; 4; 6; 8; 10; 12; 14; 16 ]
printfn "The original list: %A" list1

let reverse lt =
   let rec loop acc = function
      | [] -> acc
      | hd :: tl -> loop (hd :: acc) tl
   loop [] lt

printfn "The reversed list: %A" (reverse list1)

เมื่อคุณคอมไพล์และรันโปรแกรมจะให้ผลลัพธ์ดังต่อไปนี้ -

The original list: [2; 4; 6; 8; 10; 12; 14; 16]
The reversed list: [16; 14; 12; 10; 8; 6; 4; 2]

อย่างไรก็ตามคุณสามารถใช้ไฟล์ rev ฟังก์ชั่นของโมดูลเพื่อวัตถุประสงค์เดียวกัน -

let list1 = [ 2; 4; 6; 8; 10; 12; 14; 16 ]
printfn "The original list: %A" list1
printfn "The reversed list: %A" (List.rev list1)

เมื่อคุณคอมไพล์และรันโปรแกรมจะให้ผลลัพธ์ดังต่อไปนี้ -

The original list: [2; 4; 6; 8; 10; 12; 14; 16]
The reversed list: [16; 14; 12; 10; 8; 6; 4; 2]

ตัวอย่าง 2

โปรแกรมนี้แสดงการกรองรายการโดยใช้ List.filter วิธีการ -

let list1 = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]
printfn "The list: %A" list1
let list2 = list1 |> List.filter (fun x -> x % 2 = 0);;
printfn "The Filtered list: %A" list2

เมื่อคุณคอมไพล์และรันโปรแกรมจะให้ผลลัพธ์ดังต่อไปนี้ -

The list: [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]
The Filtered list: [2; 4; 6; 8; 10]

ตัวอย่างที่ 3

List.map วิธีการแมปรายการจากประเภทหนึ่งไปยังอีกประเภทหนึ่ง -

let list1 = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]
printfn "The list: %A" list1
let list2 = list1 |> List.map (fun x -> (x * x).ToString());;
printfn "The Mapped list: %A" list2

เมื่อคุณคอมไพล์และรันโปรแกรมจะให้ผลลัพธ์ดังต่อไปนี้ -

The list: [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]
The Mapped list: ["1"; "4"; "9"; "16"; "25"; "36"; "49"; "64"; "81"; "100"]

ตัวอย่างที่ 4

List.append method และตัวดำเนินการ @ ต่อท้ายรายการหนึ่งเข้าด้วยกัน -

let list1 = [1; 2; 3; 4; 5 ]
let list2 = [6; 7; 8; 9; 10]
let list3 = List.append list1 list2

printfn "The first list: %A" list1
printfn "The second list: %A" list2
printfn "The appened list: %A" list3

let lt1 = ['a'; 'b';'c' ]
let lt2 = ['e'; 'f';'g' ]
let lt3 = lt1 @ lt2

printfn "The first list: %A" lt1
printfn "The second list: %A" lt2
printfn "The appened list: %A" lt3

เมื่อคุณคอมไพล์และรันโปรแกรมจะให้ผลลัพธ์ดังต่อไปนี้ -

The first list: [1; 2; 3; 4; 5]
The second list: [6; 7; 8; 9; 10]
The appened list: [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]
The first list: ['a'; 'b'; 'c']
The second list: ['e'; 'f'; 'g']
The appened list: ['a'; 'b'; 'c'; 'e'; 'f'; 'g']

ตัวอย่างที่ 5

List.sortวิธีการจัดเรียงรายการ List.sum วิธีการให้ผลรวมขององค์ประกอบในรายการและ List.average วิธีการให้ค่าเฉลี่ยขององค์ประกอบในรายการ -

let list1 = [9.0; 0.0; 2.0; -4.5; 11.2; 8.0; -10.0]
printfn "The list: %A" list1

let list2 = List.sort list1
printfn "The sorted list: %A" list2

let s = List.sum list1
let avg = List.average list1
printfn "The sum: %f" s
printfn "The average: %f" avg

เมื่อคุณคอมไพล์และรันโปรแกรมจะให้ผลลัพธ์ดังต่อไปนี้ -

The list: [9.0; 0.0; 2.0; -4.5; 11.2; 8.0; -10.0]
The sorted list: [-10.0; -4.5; 0.0; 2.0; 8.0; 9.0; 11.2]
The sum: 15.700000
The average: 2.242857

การดำเนินการ "พับ" ใช้ฟังก์ชันกับแต่ละองค์ประกอบในรายการรวมผลลัพธ์ของฟังก์ชันในตัวแปรตัวสะสมและส่งกลับตัวสะสมซึ่งเป็นผลมาจากการดำเนินการพับ

ตัวอย่างที่ 6

List.fold วิธีใช้ฟังก์ชันกับแต่ละองค์ประกอบจากซ้ายไปขวาในขณะที่ List.foldBack ใช้ฟังก์ชันกับแต่ละองค์ประกอบจากขวาไปซ้าย

let sumList list = List.fold (fun acc elem -> acc + elem) 0 list
printfn "Sum of the elements of list %A is %d." [ 1 .. 10 ] (sumList [ 1 .. 10 ])

เมื่อคุณคอมไพล์และรันโปรแกรมจะให้ผลลัพธ์ดังต่อไปนี้ -

Sum of the elements of list [1; 2; 3; 4; 5; 6; 7; 8; 9; 10] is 55.