รายการและสถิติ
รายการเก็บหลายค่าไว้ภายใต้ชื่อเดียว เช่น จำนวนก้าวในหนึ่งสัปดาห์ คะแนนสอบหนึ่งชุด หรือยอดใบเสร็จในหนึ่งเดือน เมื่อรวมค่าไว้ในรายการแล้ว คุณหาผลรวม ค่าเฉลี่ย การกระจายของข้อมูล และเลือกค่าที่ต้องการได้
หน้านี้อธิบายการเขียนรายการและอ้างสมาชิกด้วยดัชนี สถิติสรุป การรวมค่าบรรทัดด้านบน การติดแท็กเพื่อรวมค่าบรรทัดที่อยู่คนละตำแหน่ง การเรียงและเลือกบางช่วงของรายการ การแปลงรายการด้วย map และ filter รวมถึงการคำนวณกับทั้งรายการ ใช้เมื่อต้องการสรุปตัวเลขหนึ่งคอลัมน์ รายการที่แต่ละสมาชิกเป็นแถวยังใช้เป็นเมทริกซ์ได้ ดูหน้าเมทริกซ์
การเขียนรายการ
ใส่ค่าในวงเล็บเหลี่ยม คั่นด้วยเครื่องหมายจุลภาค:
scores = [72, 85, 91, 64, 88] ได้ผลลัพธ์เป็น [72, 85, 91, 64, 88]scores[0] ได้ผลลัพธ์เป็น 72scores[4] ได้ผลลัพธ์เป็น 88length(scores) ได้ผลลัพธ์เป็น 5ตำแหน่งของสมาชิกในรายการเรียกว่าดัชนี เขียนในวงเล็บเหลี่ยมหลังรายการ ดัชนีเริ่มจากศูนย์ ดังนั้น scores[0] คือคะแนนแรก และ scores[4] คือคะแนนที่ห้า สมาชิกสุดท้ายอยู่ที่ length(scores) - 1 เสมอ ดัชนีที่ติดลบ เป็นเศษส่วน หรือเกินขนาดรายการจะเกิดข้อผิดพลาด ไม่สามารถใช้ดัชนีวนกลับจากท้ายรายการได้
องค์ประกอบอาจเป็นการคํานวณ ปริมาณที่มีหน่วย หรือรายการอื่นๆ:
[2 * 45, 60 + 15] ได้ผลลัพธ์เป็น [90, 75][1.5 kg, 750 g] ได้ผลลัพธ์เป็น [1.5 kg, 750 g][[1, 2], [3, 4]][1][0] ได้ผลลัพธ์เป็น 3ด้วยรายการที่ซ้อนกัน ดัชนีแรกเลือกรายการภายในและรายการที่สองเลือกค่าจากมัน: [1] เลือก [3, 4] จากนั้น [0] เลือก 3
ใช้ตัวคั่นหลักพันภายในรายการได้ จึงวางตัวเลขตามที่เขียนไว้ได้เลย ใส่ช่องว่างหลังจุลภาคที่คั่นระหว่างค่า ส่วนจุลภาคที่ตามด้วยตัวเลขสามหลักจะยังเป็นส่วนหนึ่งของตัวเลข:
salaries = [£32,000, £41,500, £38,250] ได้ผลลัพธ์เป็น [£32,000.00, £41,500.00, £38,250.00]average(salaries) ได้ผลลัพธ์เป็น £37,250.00ข้อควรสังเกต:
- หากไม่มีช่องว่าง จุลภาคแต่ละตัวจะคั่นค่า ดังนั้น
[8200,10400]มีสองค่า ส่วนรายการอย่าง[100,200,300]อาจหมายถึงตัวเลขเดียวหรือสามค่า Varlig จึงแสดงข้อผิดพลาดพร้อมอธิบายการตีความทั้งสองแบบ - คำตอบแสดงตัวคั่นหลักพันและช่องว่างหลังจุลภาคที่คั่นสมาชิก เช่น
[8,200, 10,400]เป็นรายการที่มีสองค่า - รายการมีค่ามากที่สุด 1,024 ค่า
สถิติสรุป
scores = [72, 85, 91, 64, 88]sum(scores) ได้ผลลัพธ์เป็น 400average(scores) ได้ผลลัพธ์เป็น 80median(scores) ได้ผลลัพธ์เป็น 85min(scores) ได้ผลลัพธ์เป็น 64max(scores) ได้ผลลัพธ์เป็น 91count(scores) ได้ผลลัพธ์เป็น 5ใช้ mean และ avg แทน average, total แทน sum, stdev แทน stddev และ count แทน length ได้ จึงใช้ชื่อที่คุ้นเคยจากสเปรดชีตได้ ส่วน product คูณทุกค่าเข้าด้วยกัน สำหรับค่าที่พบบ่อยที่สุด เปอร์เซ็นไทล์ และควอร์ไทล์ ดูด้านล่าง
ด้วยรายการที่มีชื่อ คุณสามารถเขียนสถิติเป็นคําได้:
scores = [72, 85, 91, 64, 88]average of scores ได้ผลลัพธ์เป็น 80total of scores ได้ผลลัพธ์เป็น 400sum of, mean of, median of, min of, max of และ count of ใช้รูปแบบเดียวกัน หลัง of ให้เขียนชื่อหรือค่าที่คั่นด้วยจุลภาค จะใส่วงเล็บกลมหรือไม่ก็ได้ หากเขียนค่าในวงเล็บเหลี่ยม ให้ใช้รูปแบบฟังก์ชัน เช่น average([72, 85, 91])
สถิติส่วนใหญ่ รวมถึง sum, product, average, median, min, max, count และ stddev ยังยอมรับค่าแยกต่างหากแทนรายการ:
max(72, 85, 91) ได้ผลลัพธ์เป็น 91sum(1, 2, 3, 4) ได้ผลลัพธ์เป็น 10average of 70, 85, 91 ได้ผลลัพธ์เป็น 82mean of (1,2,3) ได้ผลลัพธ์เป็น 2average(1,200, 1,800) ได้ผลลัพธ์เป็น 1,500รวมค่าจากบรรทัดด้านบน
บรรทัดที่เขียนเพียง sum, total, subtotal, grand total, average, max หรือ min จะคำนวณค่านั้นจากคำตอบด้านบนในส่วนเดียวกัน โดยเริ่มหลังยอดรวมก่อนหน้า เส้นคั่น --- หรือหัวข้อ # แต่ละส่วนของโน้ตจึงมีค่าสรุปของตัวเองขณะพิมพ์ ซึ่งทำงานเช่นเดียวกับ Subtotal ในเมนูบริบทของบรรทัด:
# Groceriesbread = £1.20milk = £1.45eggs = £2.30total ได้ผลลัพธ์เป็น £4.95# Householdbin bags = £3.50washing up liquid = £1.80total ได้ผลลัพธ์เป็น £5.30เพิ่มป้ายกำกับ ตั้งชื่อผลลัพธ์ แปลงหน่วยคำตอบ หรือใส่ความคิดเห็นท้ายคำสั่งได้ เพื่อให้บรรทัดอ่านต่อเนื่องกับเนื้อหาโน้ต:
tickets = £64train = £41.20Estimated total: total ได้ผลลัพธ์เป็น £105.20est = total เก็บผลลัพธ์ไว้ในชื่อตัวแปร และ total // still to book เพิ่มความคิดเห็นข้างคำสั่ง ส่วน total in kg แปลงหน่วยก่อนแสดง เหมาะกับส่วนที่มีทั้งกรัมและกิโลกรัม คำสถิติที่อยู่ข้างตัวดำเนินการให้ค่าเดียวกับเมื่อเขียนในบรรทัดแยก ดังนั้น £5 + subtotal จึงบวก £5 เพิ่มในยอดรวมย่อย
# Parcels12 kg ได้ผลลัพธ์เป็น 12 kg4 kg ได้ผลลัพธ์เป็น 4 kg850 g ได้ผลลัพธ์เป็น 850 gtotal in kg ได้ผลลัพธ์เป็น 16.85 kgmax ได้ผลลัพธ์เป็น 12 kgหากคุณกำหนดค่าชื่อ sum หรือ total ไว้แล้ว บรรทัดจะแสดงค่าของคุณแทน หากไม่มีค่าด้านบนให้คำนวณ จะแสดง Unsupported: no amounts above to add up แทนช่องว่างหรือศูนย์ ซึ่งมักเกิดจากมีหัวข้อคั่นอยู่ที่คุณอาจลืมไป
แต่ละค่าจะถูกนับเพียงครั้งเดียว หากบรรทัดถัดมาในส่วนเดียวกันใช้ค่าที่ตั้งชื่อไว้ในการคำนวณ ยอดรวมจะนับบรรทัดผลลัพธ์นั้นแทนการนับทั้งสองบรรทัด รายการซื้อของที่มีราคาต่อหน่วยและจำนวนจึงรวมได้เท่ากับยอดที่จะจ่ายจริง:
shirt = £18.50shorts = £99 * shirt ได้ผลลัพธ์เป็น £166.5010 * shorts ได้ผลลัพธ์เป็น £90.00fee = £40vat = fee * 20% ได้ผลลัพธ์เป็น £8.00total ได้ผลลัพธ์เป็น £304.50shirt และ shorts ถูกนับรวมอยู่ในสองบรรทัดที่ใช้ค่านั้น ส่วน fee ยังอยู่ในยอดรวม เพราะ vat คำนวณเพียงสัดส่วนหนึ่งของค่านั้น
ระบบติดตามความสัมพันธ์นี้ต่อไปตลอดสายของตัวแปร หากโน้ตแบ่งค่าหนึ่งออกเป็นส่วนย่อยแล้วนำส่วนย่อยมาบวกกลับ จะนับทั้งบรรทัดที่รวมส่วนย่อยและค่าเดิมที่ใช้แบ่ง:
pot = £9001st = 50% of pot ได้ผลลัพธ์เป็น £450.002nd = 30% of pot ได้ผลลัพธ์เป็น £270.003rd = 20% of pot ได้ผลลัพธ์เป็น £180.001st + 2nd + 3rd ได้ผลลัพธ์เป็น £900.00total ได้ผลลัพธ์เป็น £900.00ระบบรวมเฉพาะค่าชนิดเดียวกัน หากด้านบนมีเงินหรือปริมาณที่มีหน่วย จะไม่รวมเปอร์เซ็นต์ อัตรา และจำนวนสิ่งของที่ไม่มีหน่วย รวมถึงบรรทัดที่ผิดพลาด ตัวเลขเปล่าที่วางเป็นคอลัมน์จะถูกนำมารวมเมื่อเขียนทศนิยมเหมือนจำนวนเงินถึงหน่วยย่อย ส่วนค่าที่มีทศนิยมมากกว่านั้น เช่น อัตราแลกเปลี่ยนหรือตัวคูณ จะถูกเว้นไว้ ข้อความประกอบยอดรวมระบุทุกบรรทัดที่ไม่นับ เช่น “ไม่นับบรรทัด 3 (people = 2)” หรือ “ไม่นับบรรทัด 2 (มีข้อผิดพลาด)” จึงเห็นได้ทันทีว่ายอดนั้นรวมอะไรบ้าง
หากมีค่าตั้งแต่สองค่าขึ้นไปที่ไม่ตั้งชื่อ เรียงอยู่ติดเหนือยอดรวมและใต้บรรทัดที่คำนวณจากตัวแปร ระบบจะรวมเฉพาะรายการค่านั้น งบประมาณที่คำนวณไว้ด้านบนของโน้ตจึงไม่ถูกนับซ้ำในรายการด้านล่าง:
budget = £18,000remaining = budget - £6,388.25 ได้ผลลัพธ์เป็น £11,611.75- skip hire £250 ได้ผลลัพธ์เป็น £250.00- deep clean £120 ได้ผลลัพธ์เป็น £120.00subtotal ได้ผลลัพธ์เป็น £370.00หากต้องการรวมค่าบรรทัดที่ไม่อยู่ติดกัน ให้ติดแท็กแทน
ค่าที่พบมากที่สุด
mode ให้ค่าที่ปรากฏบ่อยที่สุดเพียงค่าเดียว ส่วน modes ให้รายการทุกค่าที่มีความถี่สูงสุดเท่ากัน:
marks = [3, 4, 4, 5, 5, 5, 6]mode(marks) ได้ผลลัพธ์เป็น 5modes([1, 1, 2, 2, 3]) ได้ผลลัพธ์เป็น [1, 2]mode ให้คำตอบเมื่อมีเพียงค่าเดียวที่พบบ่อยกว่าค่าอื่นทั้งหมด หากไม่มีค่าซ้ำ หรือมีหลายค่าที่พบมากที่สุดเท่ากัน ระบบจะแจ้งให้ทราบแทนการเลือกค่าใดค่าหนึ่ง:
mode([1, 2, 3]) ได้ผลลัพธ์เป็น Unsupported: No value repeats, so this list has no mode; use median or average insteadเปอร์เซ็นไทล์และควอร์ไทล์
percentile(list, rank) รับอันดับเปอร์เซ็นไทล์ตั้งแต่ 0 ถึง 100 และให้ค่าที่ตำแหน่งนั้น โดยประมาณค่าแทรกระหว่างข้อมูลสองค่าที่ใกล้ที่สุด ส่วน quartile(list, k) แบ่งตามส่วนสี่ โดยใช้ k ตั้งแต่ 0 ถึง 4 ดังนั้น quartile(list, 1) จึงเท่ากับ percentile(list, 25):
scores = [72, 85, 91, 64, 88]percentile(scores, 50) ได้ผลลัพธ์เป็น 85percentile(scores, 25) ได้ผลลัพธ์เป็น 72quartile(scores, 3) ได้ผลลัพธ์เป็น 88quartile(scores, 4) ได้ผลลัพธ์เป็น 91percentile([1, 2, 3, 4], 25) ได้ผลลัพธ์เป็น 1.75quartile([1, 2, 3, 4], 3) ได้ผลลัพธ์เป็น 3.25เปอร์เซ็นไทล์ที่ 50 คือค่ามัธยฐาน และเปอร์เซ็นไทล์ที่ 0 และ 100 — quartile(list, 0) และ quartile(list, 4) — คือค่าที่เล็กที่สุดและใหญ่ที่สุด ซึ่งเท่ากับ min และ max อันดับที่อยู่นอกช่วงของค่านั้นเป็นข้อผิดพลาด ไม่ใช่ค่าที่ใกล้ที่สุดที่เหมาะสม:
percentile([1, 2, 3, 4], 101) ได้ผลลัพธ์เป็น Unsupported: A percentile is between 0 and 100quartile([1, 2, 3, 4], 5) ได้ผลลัพธ์เป็น Unsupported: A quartile is 0, 1, 2, 3 or 4การกระจาย: ความแปรปรวนและส่วนเบี่ยงเบนมาตรฐาน
scores = [72, 85, 91, 64, 88]variance(scores) ได้ผลลัพธ์เป็น 132.5stddev(scores) to 1 dp ได้ผลลัพธ์เป็น 11.5ทั้งสองเป็นสถิติสำหรับกลุ่มตัวอย่าง โดยหารด้วยจำนวนข้อมูลลบหนึ่ง (n - 1) ซึ่งเป็นวิธีทั่วไปเมื่อข้อมูลเป็นตัวอย่างจากประชากรที่ใหญ่กว่า จึงต้องมีอย่างน้อยสองค่า เติม to 1 dp หลังสถิติใดก็ได้เพื่อปัดค่า
เมื่อรายการของคุณเป็นประชากรทั้งหมดแทนที่จะเป็นตัวอย่าง ให้ใช้รูปแบบประชากร ซึ่งหารด้วย n และต้องการเพียงค่าเดียว:
# Train delays in minutesdelays = [2, 4, 4, 4, 5, 5, 7, 9]sample_variance(delays) ได้ผลลัพธ์เป็น 4.5714285714population_variance(delays) ได้ผลลัพธ์เป็น 4sample_stddev(delays) ได้ผลลัพธ์เป็น 2.1380899353population_stddev(delays) ได้ผลลัพธ์เป็น 2| การเรียกฟังก์ชัน | ตัวหารของผลรวมกำลังสองของผลต่าง | จำนวนค่าขั้นต่ำ |
|---|---|---|
variance, sample_variance |
n - 1 |
สองค่า |
population_variance |
n |
หนึ่งค่า |
stddev, stdev, sample_stddev |
n - 1 |
สองค่า |
population_stddev |
n |
หนึ่งค่า |
sample_variance และ sample_stddev เป็นชื่อเต็มที่ใช้แทน variance และ stddev เพื่อระบุชนิดให้ชัดเจน ชื่อสั้นใช้กับกลุ่มตัวอย่างมาโดยตลอดและยังคงเป็นเช่นเดิม
รายการพร้อมหน่วย
sum, average, median, mode, modes, percentile, quartile, min, max, stddev และ population_stddev รักษาหน่วยไว้และแปลงหน่วยที่เข้ากันได้ โดยแปลงทุกค่าเป็นหน่วยของค่าแรก และให้คำตอบในหน่วยนั้น:
commutes = [24 min, 31 min, 27 min, 22 min]sum(commutes) ได้ผลลัพธ์เป็น 1 hour 44 minaverage(commutes) ได้ผลลัพธ์เป็น 26 minmedian(commutes) ได้ผลลัพธ์เป็น 25.5 minpercentile(commutes, 25) ได้ผลลัพธ์เป็น 23.5 minpopulation_stddev(commutes) ได้ผลลัพธ์เป็น 3.3911649916 minsum([1 kg, 500 g]) ได้ผลลัพธ์เป็น 1.5 kgmodes([1 kg, 500 g, 1 kg, 500 g]) ได้ผลลัพธ์เป็น [0.5 kg, 1 kg]ฟังก์ชันความแปรปรวนเป็นข้อยกเว้น เพราะต้องยกกำลังสองข้อมูลและไม่ได้รักษาหน่วยไว้ จึงรับเฉพาะตัวเลขที่ไม่มีหน่วย
sample_variance([1 kg, 2 kg]) ได้ผลลัพธ์เป็น Unsupported: A variance squares its observations, so it takes plain numbers; use stddev for amounts with a unitsort ก็ใช้ได้เฉพาะตัวเลขที่ไม่มีหน่วย หากหาค่าสถิติจากหน่วยที่เข้ากันไม่ได้ เช่น sum([1 kg, 3 m]) ระบบจะแสดงข้อผิดพลาดแทนการข้ามค่าบางค่าโดยไม่แจ้ง
อ่านข้อกำหนดเรื่องความแม่นตรงของการคำนวณเหล่านี้ในสิ่งที่ระบบคำนวณรับประกัน
รายการที่ว่างเปล่า
| การเรียกฟังก์ชันกับรายการว่าง | ผลลัพธ์ |
|---|---|
sum([]) |
0 |
product([]) |
1 |
count([]), length([]) |
0 |
average([]), median([]), min([]), max([]) |
ข้อผิดพลาด |
variance([]), stddev([]) |
ข้อผิดพลาด |
รายการว่างมักเกิดจาก filter ที่ไม่มีค่าใดผ่านเงื่อนไข ดังนั้น average ของรายการที่กรองแล้วอาจผิดพลาดได้แม้รายการต้นฉบับจะมีข้อมูล
แท็ก
แท็กคือ # ตามด้วยคำโดยไม่เว้นช่องว่าง เช่น #food เขียนไว้ตำแหน่งใดในบรรทัดก็ได้เพื่อจัดประเภทบรรทัดนั้น แท็กไม่ร่วมในการคำนวณ บรรทัดจึงยังแสดงคำตอบของตัวเอง และจะถูกจัดกลุ่มกับทุกบรรทัดที่มีแท็กเดียวกัน จากนั้น total of #food จะรวมค่าบรรทัดเหล่านั้น:
£12.50 lunch #food ได้ผลลัพธ์เป็น £12.50£8 coffee #food ได้ผลลัพธ์เป็น £8.00flights = £420 #trip ได้ผลลัพธ์เป็น £420.00total of #food ได้ผลลัพธ์เป็น £20.50ข้อดีของแท็กที่ยอดรวมย่อยทำไม่ได้คือ บรรทัดไม่ต้องอยู่ติดกัน คุณใส่ค่าใช้จ่ายรายสัปดาห์ แผนเที่ยว และรายการซื้อของไว้ในบล็อกเดียว แล้วแยกยอดแต่ละกลุ่มไว้ด้านล่างได้ วางตัวชี้เหนือแท็กเพื่อดูยอดรวมถึงจุดนั้น
ใช้สถิติกับแท็กได้ ละคำว่า of ได้ และวางแท็กก่อนหรือหลังคำสถิติก็ได้ ผลลัพธ์มีป้ายกำกับหรือตั้งชื่อตัวแปรได้เหมือนบรรทัดอื่น:
#food £12.50#food £8£420 #triptotal of #food ได้ผลลัพธ์เป็น £20.50average of #food ได้ผลลัพธ์เป็น £10.25count of #food ได้ผลลัพธ์เป็น 2min of #food ได้ผลลัพธ์เป็น £8.00max of #food ได้ผลลัพธ์เป็น £12.50#food total ได้ผลลัพธ์เป็น £20.50Food this week: sum of #food ได้ผลลัพธ์เป็น £20.50eaten = avg #food ได้ผลลัพธ์เป็น £10.25sum, total, average, avg, mean, count, min และ max ทั้งหมดอ่านด้วยวิธีนี้
ค่าสถิติของแท็กใช้แทนค่าตัวเลขได้ จึงนำไปคำนวณต่อ เช่น หักเงินมัดจำจากยอดรวม คูณเพิ่มตามสัดส่วน หรือเปรียบเทียบยอดของสองแท็ก:
£20 shop #food ได้ผลลัพธ์เป็น £20.00£30 meal out #food ได้ผลลัพธ์เป็น £30.00total of #food - £10 ได้ผลลัพธ์เป็น £40.002 * total of #food ได้ผลลัพธ์เป็น £100.00Cooking kit: total of #food ได้ผลลัพธ์เป็น £50.00แต่ละบรรทัดมีแท็กกี่แท็กก็ได้ และทุกแท็กจะนับบรรทัดนั้น หากระบุสองแท็กในคำสั่งเดียว จะเลือกเฉพาะบรรทัดที่มีทั้งสองแท็ก:
£50 dinner #trip #food ได้ผลลัพธ์เป็น £50.00£30 taxi #trip ได้ผลลัพธ์เป็น £30.00£9 sandwich #food ได้ผลลัพธ์เป็น £9.00total of #trip ได้ผลลัพธ์เป็น £80.00total of #food ได้ผลลัพธ์เป็น £59.00total of #trip #food ได้ผลลัพธ์เป็น £50.00ขอบเขตของผลรวมตามแท็ก
คำสั่งที่ใช้แท็กตรวจบรรทัดชุดเดียวกับ total แบบทั่วไป และใช้กฎเดียวกัน:
- ครอบคลุมเฉพาะส่วนปัจจุบัน โดยย้อนไปถึงยอดรวมก่อนหน้า เส้นคั่น
---หรือหัวข้อ# - รวมเฉพาะค่าชนิดเดียวกัน ไม่นับเปอร์เซ็นต์ อัตรา จำนวนสิ่งของที่ไม่มีหน่วย และบรรทัดที่ผิดพลาด โดยข้อความประกอบจะระบุให้ทราบ เช่น “ไม่นับบรรทัด 2 (people = 2)”
- แต่ละค่าถูกนับครั้งเดียว หากราคาที่ติดแท็กถูกนำไปคูณในบรรทัดที่ติดแท็กภายหลัง จะนับเฉพาะบรรทัดผลลัพธ์ ไม่ได้นับทั้งสองบรรทัด
ดังนั้นหัวข้อคือทั้งหมดที่จําเป็นในการแยก #food ของหนึ่งสัปดาห์ออกจากสัปดาห์ถัดไป:
# Week 1£20 lunch #food ได้ผลลัพธ์เป็น £20.00total of #food ได้ผลลัพธ์เป็น £20.00# Week 2£30 lunch #food ได้ผลลัพธ์เป็น £30.00total of #food ได้ผลลัพธ์เป็น £30.00หากไม่มีค่าให้รวม ระบบจะแจ้งให้ทราบแทนการแสดงช่องว่างหรือศูนย์ ซึ่งมักเกิดจากพิมพ์แท็กผิดหรือมีหัวข้อคั่นที่ลืมไป:
£12.50 lunch #food ได้ผลลัพธ์เป็น £12.50total of #drinks ได้ผลลัพธ์เป็น Unsupported: no lines tagged #drinks abovering the plumber #jobstotal of #jobs ได้ผลลัพธ์เป็น Unsupported: no amounts tagged #jobs aboveการเขียนชื่อแท็ก
ชื่อแท็กมีตัวอักษร ตัวเลข _, - และ / ได้ ดังนั้น #q1-2026 และ #trip/lisbon ต่างเป็นชื่อแท็กหนึ่งชื่อ โดยไม่แยกตัวพิมพ์ใหญ่เล็ก:
£20 flight #trip/lisbon ได้ผลลัพธ์เป็น £20.00£35 hotel #Trip/Lisbon ได้ผลลัพธ์เป็น £35.00total of #trip/lisbon ได้ผลลัพธ์เป็น £55.00# ที่ไม่ได้ติดกับคำยังคงมีความหมายเดิม สิ่งที่คุณเขียนอยู่แล้วจึงไม่เปลี่ยน:
| คุณเขียน | ความหมาย |
|---|---|
# Weekly shop |
คอมเมนต์ เพราะมีช่องว่างหลังเครื่องหมายแฮช |
5 + 5 # comment |
เช่นเดียวกัน: ระบบไม่นำข้อความหลังแฮชทั้งหมดมาคำนวณ |
C#4 in Hz |
เครื่องหมายชาร์ปทางดนตรี เพราะแฮชเขียนติดกับโน้ตดนตรี |
#1, Invoice #123 |
ตัวเลข ไม่ใช่แท็ก: ชื่อแท็กไม่สามารถขึ้นต้นด้วยตัวเลขได้ |
#ff0000, #fff |
รหัสสี |
varlig.app/docs#tags |
ที่อยู่เว็บที่มีส่วนอ้างอิงตำแหน่งภายในหน้า |
ชื่อแท็กต้องเริ่มด้วยตัวอักษร แต่หากหลังเครื่องหมายแฮชเป็นเลขฐานสิบหกจำนวนสาม สี่ หก หรือแปดหลัก จะถูกอ่านเป็นสี ดังนั้น #fee เป็นสี ส่วน #fees เป็นแท็ก
แท็กในโน้ตและแท็กในบล็อก
แท็กที่จัดหมวดหมู่โน้ตในแถบด้านข้างอธิบายในแท็ก ลิงก์ และลิงก์ย้อนกลับ แท็กเหล่านั้นไม่ครอบคลุมภายในบล็อกคำนวณ: #food ในบล็อกใช้จัดประเภทบรรทัดเพื่อรวมยอด และไม่ปรากฏในแถบด้านข้าง ส่วน #food ที่เขียนในเนื้อหาโน้ตนอกบล็อกใช้จัดหมวดหมู่โน้ตโดยไม่กระทบการคำนวณ หากต้องการทั้งสองอย่าง ให้เขียนทั้งสองตำแหน่ง อีกจุดที่ต่างกันคือแท็กในเนื้อหาโน้ตมีช่องว่างได้เมื่อปิดท้ายด้วย # อีกตัว แต่แท็กในบล็อกคำนวณสิ้นสุดที่ช่องว่างแรกเสมอ
ข้อมูลอ้างอิงเกี่ยวกับรายการ
| การเรียกฟังก์ชัน | การทำงาน |
|---|---|
range(start,end) |
จำนวนเต็มตั้งแต่ start ถึง end รวมถึงทั้งสองด้าน |
range(start,end,step) |
เพิ่มค่าทีละ step ซึ่งเป็นค่าลบหรือเศษส่วนได้ แต่เป็นศูนย์ไม่ได้ |
length(list), count(list) |
จํานวนค่า |
sort(list) |
เล็กที่สุดถึงใหญ่ที่สุด; ตัวเลขธรรมดาเท่านั้น |
reverse(list) |
ค่าเดิมเรียงย้อนลำดับ ใช้กับค่าชนิดใดก็ได้ |
unique(list) |
เก็บแต่ละค่าไว้เฉพาะตำแหน่งแรกที่พบ |
slice(list,start,end) |
ค่าจากดัชนี start ไปยัง แต่ไม่รวมดัชนี end |
map(expression,variable,list) |
คำนวณนิพจน์หนึ่งครั้งต่อแต่ละค่า |
filter(condition,variable,list) |
เก็บเฉพาะค่าที่ทำให้เงื่อนไขเป็น true |
range(1, 5) ได้ผลลัพธ์เป็น [1, 2, 3, 4, 5]range(0, 100, 25) ได้ผลลัพธ์เป็น [0, 25, 50, 75, 100]range(10, 0, -2) ได้ผลลัพธ์เป็น [10, 8, 6, 4, 2, 0]scores = [72, 85, 91, 64, 88]sort(scores) ได้ผลลัพธ์เป็น [64, 72, 85, 88, 91]reverse(sort(scores)) ได้ผลลัพธ์เป็น [91, 88, 85, 72, 64]slice(sort(scores), 0, 3) ได้ผลลัพธ์เป็น [64, 72, 85]unique([4, 2, 4, 6, 2]) ได้ผลลัพธ์เป็น [4, 2, 6]reverse(sort(…)) ให้ผลลัพธ์เป็นลำดับจากใหญ่ไปเล็กที่สุด และ slice(sort(…), 0, 3) เลือกค่าที่ต่ำที่สุดสามค่า
ขอบเขตการเลือกช่วงต้องเป็นไปตาม 0 <= start <= end <= length หาก start เท่ากับ end จะได้รายการว่าง ไม่มีรูปแบบย่อ scores[0:2] ให้ใช้ slice(scores, 0, 2)
unique เปรียบเทียบค่าตรงตามที่จัดเก็บ ดังนั้น 1 kg และ 1000 g นับเป็นสองค่าที่แตกต่างกัน และสองผลลัพธ์ที่แตกต่างกันในทศนิยมที่สิบจะไม่ถูกรวมเข้าด้วยกัน
การแปลงสมาชิกด้วย map และการกรองด้วย filter
map คำนวณนิพจน์ให้แต่ละค่าในรายการ ส่วน filter เก็บเฉพาะค่าที่ผ่านเงื่อนไข ทั้งสองรับนิพจน์ก่อน ตามด้วยชื่อตัวแปรแทนแต่ละค่า แล้วจึงเป็นรายการ:
scores = [72, 85, 91, 64, 88]map(s + 5, s, scores) ได้ผลลัพธ์เป็น [77, 90, 96, 69, 93]filter(s >= 80, s, scores) ได้ผลลัพธ์เป็น [85, 91, 88]count(filter(s >= 80, s, scores)) ได้ผลลัพธ์เป็น 3average(filter(s >= 80, s, scores)) ได้ผลลัพธ์เป็น 88อ่าน filter(s >= 80, s, scores) เป็น "ค่า s ใน scores โดยที่ s >= 80" ทั้งทํางานกับหน่วยและเงิน:
map(p * 1.2, p, [£10, £25, £40]) ได้ผลลัพธ์เป็น [£12.00, £30.00, £48.00]spend = [£42.50, £18.20, £65.00, £23.30]filter(x > £30, x, spend) ได้ผลลัพธ์เป็น [£42.50, £65.00]sum(filter(x > £30, x, spend)) ได้ผลลัพธ์เป็น £107.50ตัวแปรที่เลือกมีขอบเขตเฉพาะในการเรียกฟังก์ชันนี้ ไม่เปลี่ยนค่าตัวแปรชื่อเดียวกันที่อื่นในโน้ต:
x = 10map(x * 2, x, [1, 2, 3]) ได้ผลลัพธ์เป็น [2, 4, 6]x ได้ผลลัพธ์เป็น 10เงื่อนไขใน filter ต้องเป็นการเปรียบเทียบหรือค่าจริง/เท็จอื่น ตัวเลขธรรมดาจะไม่ถือว่าเป็นจริง ดังนั้น filter(x, x, [0, 1, 2]) เป็นข้อผิดพลาด การแมปหรือการกรองรายการที่ว่างเปล่าจะให้รายการที่ว่างเปล่า
การคำนวณกับรายการ
คูณหรือหารทุกสมาชิกด้วยตัวเลขเดียวได้ และบวกหรือลบสองรายการที่ยาวเท่ากันโดยจับคู่สมาชิกตามตำแหน่งได้:
[30, 36, 22] / 40 * 100 ได้ผลลัพธ์เป็น [75, 90, 55]2 * [3, 1, 4] ได้ผลลัพธ์เป็น [6, 2, 8]-[5, -3] ได้ผลลัพธ์เป็น [-5, 3]mocks = [62, 70, 60]finals = [72, 78, 69]finals - mocks ได้ผลลัพธ์เป็น [10, 8, 9]average(finals - mocks) ได้ผลลัพธ์เป็น 9[1 kg, 2 kg] + [500 g, 500 g] ได้ผลลัพธ์เป็น [1.5 kg, 2.5 kg][72, 85] == [72, 85] ได้ผลลัพธ์เป็น trueบรรทัดแรกแปลงคะแนนเต็ม 40 เป็นเปอร์เซ็นต์ ส่วน finals - mocks จับคู่คะแนนสอบปลายภาคกับคะแนนสอบจำลองของนักเรียนแต่ละคน
การดําเนินการบางอย่างไม่รองรับในรายการ:
- การเพิ่มตัวเลขเดียวลงในรายการ เช่น ใน
scores + 5ใช้map(s + 5, s, scores)แทน - การบวกรายการที่ยาวไม่เท่ากัน ระบบจะไม่ทำซ้ำสมาชิกเพื่อให้ความยาวเท่ากัน
- การคูณรายการหนึ่งมิติสองรายการด้วย
*หากต้องการผลรวมของผลคูณสมาชิกแต่ละคู่ ให้ใช้dotเช่นdot([2, 3, 1], [4, 5, 10])ได้33ซึ่งอาจแทนกาแฟสองแก้วแก้วละ 4 ชาสามแก้วแก้วละ 5 และเค้กหนึ่งชิ้นราคา 10 ส่วน*ระหว่างรายการที่สมาชิกเป็นแถวจะเป็นการคูณเมทริกซ์ ดูเวกเตอร์และเมทริกซ์
รายการที่สมาชิกเป็นแถว
รายการที่สมาชิกเป็นแถวทำงานคล้ายตารางขนาดเล็ก average และ sum คำนวณลงมาตามแต่ละคอลัมน์ ส่วน map ใช้คำนวณในแต่ละแถวได้:
# Each row is one student: [mock, final]results = [[62, 72], [70, 78], [60, 69]]average(results) ได้ผลลัพธ์เป็น [64, 73]sum(results) ได้ผลลัพธ์เป็น [192, 219]map(average(r), r, results) ได้ผลลัพธ์เป็น [67, 74, 64.5]median, min, max และ stddev ไม่รับรายการที่สมาชิกเป็นแถว ให้ใช้ map คำนวณทีละแถวตามบรรทัดสุดท้าย หรือแยกคอลัมน์ออกเป็นรายการของตัวเอง
อ่านข้อกำหนดของการคำนวณเหล่านี้ทั้งหมดในเอกสารอ้างอิงคณิตศาสตร์ขั้นสูง
ตัวอย่างการใช้ร่วมกัน
นี่คือการนับก้าวหนึ่งสัปดาห์จากนาฬิกา โดยมีเป้าหมายประจําวัน:
# Steps, Monday to Sundaysteps = [8200, 10400, 6300, 12000, 9100, 7400, 9600]goal = 9000sum(steps) ได้ผลลัพธ์เป็น 63,000average(steps) ได้ผลลัพธ์เป็น 9,000median(steps) ได้ผลลัพธ์เป็น 9,100Days on target: count(filter(s >= goal, s, steps)) ได้ผลลัพธ์เป็น 4Spread: max(steps) - min(steps) ได้ผลลัพธ์เป็น 5,700# Roughly 0.75 m per stepwalked = sum(steps) * 0.75 mwalked in km ได้ผลลัพธ์เป็น 47.25 kmค่าเฉลี่ยตรงกับเป้าหมายพอดี แต่มีเพียงสี่วันที่ถึงเป้าหมาย และวันที่เดินมากที่สุดกับน้อยที่สุดต่างกัน 5,700 ก้าว เปลี่ยน goal หรือวางข้อมูลของสัปดาห์หน้า แล้วทุกบรรทัดจะอัปเดต