القوائم والإحصاء
تجمع القائمة عدة قيم تحت اسم واحد، مثل أعداد خطوات أسبوع أو درجات امتحانات أو إيصالات شهر. بعد وضع القيم في قائمة، يمكنك حساب مجموعها ومتوسطها وتشتتها، واستخراج القيم التي تهمك.
تشرح هذه الصفحة كتابة القوائم والوصول إلى عناصرها بالفهرسة، والإحصاءات الملخّصة، وجمع الأسطر السابقة، وتصنيف الأسطر باستخدام الأوسمة لجمعها أينما كانت، والفرز واستخراج أجزاء من القائمة، والتحويل باستخدام 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]قائمة من قيمتين. - تحتوي القائمة على 1024 قيمة على الأكثر.
إحصائيات موجزة
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 الناتج 400تعمل sum 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.20تحفظ est = total النتيجة تحت اسم، وتضيف total // still to book تعليقًا بجانبها. تُجري total in kg التحويل قبل عرض النتيجة، وهو مفيد إذا جمع القسم غرامات وكيلوغرامات. عند كتابة كلمة إحصائية بجانب عامل حسابي، تعطي القيمة نفسها التي كانت ستعرضها في سطر مستقل؛ لذلك تضيف £5 + subtotal خمسة جنيهات إلى المجموع التراكمي.
# 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.50يُحتسَب shirt و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المئين الخمسون هو الوسيط، والمئينان صفر و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 unitتعمل sort أيضًا مع الأعداد المجرّدة فقط. إجراء حساب إحصائي على قيم بوحدات غير متوافقة، مثل 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.25تُقرأ sum و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 بالقيم التي تحقق شرطًا. في كلتيهما يأتي التعبير أولًا، ثم اسم يمثّل كل قيمة، ثم القائمة:
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 أو الصق أعداد الأسبوع القادم فتتحدث جميع الأسطر.