İçeriğe atla
Varlig Kılavuzu
Varlig ana sayfası

Listeler ve istatistik

Bir liste, bir haftalık adım sayısı, bir dizi sınav puanı veya bir aylık makbuz gibi birkaç değeri tek bir isim altında bir arada tutar. Değerler bir listeye girdikten sonra, bunları toplayabilir, ortalamalayabilir, ne kadar dağıldıklarını ölçebilir ve önemli olanları seçebilirsiniz.

Bu sayfa; liste yazmayı ve indeksle erişmeyi, özet istatistikleri, üst satırları toplamayı, konumlarından bağımsız toplayabilmek için satırları etiketlemeyi, sıralamayı ve alt aralık seçmeyi, map ve filter ile liste dönüştürmeyi ve tüm listeye aritmetik işlem uygulamayı açıklar. Bir sayı sütununu özetlemek istediğinizde kullanabilirsiniz. Satırlardan oluşan listeler matris olarak da kullanılabilir; bunun için ayrı bir sayfa vardır.

Liste yazma

Değerleri virgülle ayırarak köşeli parantez içine koyun:

calc
scores = [72, 85, 91, 64, 88] sonucu [72, 85, 91, 64, 88]
scores[0] sonucu 72
scores[4] sonucu 88
length(scores) sonucu 5

Değerin listedeki konumuna indeks denir ve listenin ardından köşeli parantezle yazılır. İndeksler sıfırdan başlar; scores[0] ilk puanı, scores[4] beşinci puanı verir. Son öğe her zaman length(scores) - 1 indeksindedir. Negatif, kesirli veya sınırı aşan indeks hata verir; indeksler listenin sonundan başına dönmez.

Öğeler hesaplamalar, birimli miktarlar veya diğer listeler olabilir:

calc
[2 * 45, 60 + 15] sonucu [90, 75]
[1.5 kg, 750 g] sonucu [1.5 kg, 750 g]
[[1, 2], [3, 4]][1][0] sonucu 3

İç içe geçmiş listelerde, ilk dizin iç listeyi seçer ve ikincisi ondan bir değer seçer: [1] [3, 4]'yi seçer, ardından [0] 3'ü seçer.

Listelerde binlik ayırıcılar kullanılabilir; sayıları yazıldıkları biçimde yapıştırabilirsiniz. Değerleri ayıran her virgülden sonra boşluk bırakın. Ardından üç rakam gelen virgül ise sayının parçası olarak kalır:

calc
salaries = [£32,000, £41,500, £38,250] sonucu [£32,000.00, £41,500.00, £38,250.00]
average(salaries) sonucu £37,250.00

Dikkat edilmesi gereken birkaç şey:

  • Boşluk olmadan, her virgül ayrılır, bu nedenle [8200,10400]nin iki değeri vardır. [100,200,300] gibi bir liste bir veya üç sayı olabilir, bu nedenle Varlig her ikisini de yazan bir hata gösterir.
  • Sonuçlarda binlik ayırıcılar ve öğeleri ayıran virgüllerin ardından boşluk gösterilir. Bu nedenle [8,200, 10,400], iki değerli bir listedir.
  • Bir liste en fazla 1.024 değer tutar.

Özet istatistikler

calc
scores = [72, 85, 91, 64, 88]
sum(scores) sonucu 400
average(scores) sonucu 80
median(scores) sonucu 85
min(scores) sonucu 64
max(scores) sonucu 91
count(scores) sonucu 5

mean ve avg, average için; total, sum için; stdev, stddev için; count, length için alternatif adlardır. Böylece elektronik tablo alışkanlıklarınızı kullanabilirsiniz. product, değerleri birbiriyle çarpar. En sık görülen değer, yüzdelik dilim veya çeyreklik için aşağıya bakın.

Adlandırılmış bir liste ile istatistiği kelimelerle de yazabilirsiniz:

calc
scores = [72, 85, 91, 64, 88]
average of scores sonucu 80
total of scores sonucu 400

sum of, mean of, median of, min of, max of ve count of aynı şekilde çalışır. of sonrasında bir ad veya virgülle ayrılmış değerler yazın; normal parantez kullanmanız isteğe bağlıdır. Köşeli parantez içindeki değerler için fonksiyon biçimini kullanın: average([72, 85, 91]).

sum, product, average, median, min, max, count ve stddev dahil çoğu istatistik fonksiyonu, liste yerine ayrı ayrı değerler de kabul eder:

calc
max(72, 85, 91) sonucu 91
sum(1, 2, 3, 4) sonucu 10
average of 70, 85, 91 sonucu 82
mean of (1,2,3) sonucu 2
average(1,200, 1,800) sonucu 1,500

Yukarıdaki satırları toplama

Yalnızca sum, total, subtotal, grand total, average, max veya min yazan satır, üstündeki sonuçlar için ilgili değeri hesaplar. Kapsamı, önceki toplamdan, --- ayırıcısından veya # başlığından başlayan kendi bölümüdür. Böylece siz yazarken notun her bölümü kendi sonucunu verir. Satırın bağlam menüsündeki Subtotal seçeneği gibi çalışır:

calc
# Groceries
bread = £1.20
milk = £1.45
eggs = £2.30
total sonucu £4.95
# Household
bin bags = £3.50
washing up liquid = £1.80
total sonucu £5.30

Kelime bir etiket taşıyabilir, kendi adını alabilir, cevabı dönüştürebilir veya ondan sonra bir yorum yapabilir, böylece satır notunuzun geri kalanı gibi okur:

calc
tickets = £64
train = £41.20
Estimated total: total sonucu £105.20

est = total, sonucu bir ad altında saklar. total // still to book, yanına açıklama ekler. total in kg, sonucu göstermeden önce dönüştürür; gram ve kilogramın bir arada bulunduğu bölümlerde kullanışlıdır. Operatörün yanındaki istatistik kelimesi, tek başına bir satırda vereceği değeri kullanır. Bu yüzden £5 + subtotal, o ana kadarki toplama £5 ekler.

calc
# Parcels
12 kg sonucu 12 kg
4 kg sonucu 4 kg
850 g sonucu 850 g
total in kg sonucu 16.85 kg
max sonucu 12 kg

Eğer sum veya total adlı bir değer verdiyseniz, satır bunun yerine değerinizi gösterir. Çalışacak hiçbir şey yoksa, satır genellikle boş veya sıfır göstermek yerine Unsupported: no amounts above to add up yazar; bu genellikle orada olduğunu unuttuğunuz bir başlık anlamına gelir.

Her tutar bir kez sayılır. Bölümdeki sonraki bir satır adlandırılmış bir tutardan hesaplama yapıyorsa toplam ikisini birden değil, bu yeni satırı sayar. Böylece birim fiyat ve miktar içeren alışveriş listesi, gerçekten ödeyeceğiniz tutarı verir:

calc
shirt = £18.50
shorts = £9
9 * shirt sonucu £166.50
10 * shorts sonucu £90.00
fee = £40
vat = fee * 20% sonucu £8.00
total sonucu £304.50

shirt ve shorts, bunları kullanan iki satırın içine dahil edilirken, fee toplamda kalır çünkü vat sadece bir kısmını alır.

Bu kural, adlar arasındaki başvuru zincirini sonuna kadar izler. Bir notta tutar paylara bölünüp sonra paylar yeniden toplanıyorsa hem payları toplayan satır hem de payların ayrıldığı asıl tutar hesaba katılır:

calc
pot = £900
1st = 50% of pot sonucu £450.00
2nd = 30% of pot sonucu £270.00
3rd = 20% of pot sonucu £180.00
1st + 2nd + 3rd sonucu £900.00
total sonucu £900.00

Yalnızca uyumlu tutarlar toplanır. Yukarıda para veya birimli miktar varsa yüzdeler, oranlar ve birimsiz adetler dışarıda bırakılır; hatalı satırlar da sayılmaz. Sütun halinde yapıştırılan birimsiz sayılar, para tutarları gibi iki ondalık basamakla yazılmışsa toplanır. Döviz kuru veya katsayı gibi daha fazla ondalık basamak içerenler dışarıda bırakılır. Toplamın ipucu atlanan her şeyi belirtir; örneğin 3. satırdaki people = 2 değerinin veya 2. satırdaki hatanın sayılmadığını söyler. Böylece toplamın kapsamını bir bakışta görebilirsiniz.

Toplamın hemen üzerinde, adlandırılmış değerlerden hesaplanan bir satırın altında, adsız yazılmış en az iki tutar varsa bu tutarlar kendi aralarında toplanır. Böylece notun başında hesaplanan bütçe, altındaki listeye yeniden dahil edilmez:

calc
budget = £18,000
remaining = budget - £6,388.25 sonucu £11,611.75
- skip hire £250 sonucu £250.00
- deep clean £120 sonucu £120.00
subtotal sonucu £370.00

Yan yana bulunmayan satırları toplamak için bunları bir etiketle işaretleyin.

En sık görülen değerler

mode, diğerlerinden daha sık görülen değeri verir. modes, en yüksek sıklığı paylaşan tüm değerleri liste olarak verir:

calc
marks = [3, 4, 4, 5, 5, 5, 6]
mode(marks) sonucu 5
modes([1, 1, 2, 2, 3]) sonucu [1, 2]

mode, yalnızca tek bir değer diğerlerinden kesin olarak daha sık görülüyorsa sonuç verir. Hiç tekrar yoksa veya birkaç değer aynı en yüksek sıklığa sahipse rastgele birini seçmek yerine bunu bildirir:

calc
mode([1, 2, 3]) sonucu Unsupported: No value repeats, so this list has no mode; use median or average instead

Yüzdelik dilimler ve çeyrekler

percentile(list, rank) 0'dan 100'e kadar bir sıra alır ve en yakın iki gözlem arasında enterpolasyon yaparak o noktada değer verir. quartile(list, k) çeyreklerde aynı şeydir, k 0'dan 4'e kadar, bu nedenle quartile(list, 1) percentile(list, 25)dir:

calc
scores = [72, 85, 91, 64, 88]
percentile(scores, 50) sonucu 85
percentile(scores, 25) sonucu 72
quartile(scores, 3) sonucu 88
quartile(scores, 4) sonucu 91
percentile([1, 2, 3, 4], 25) sonucu 1.75
quartile([1, 2, 3, 4], 3) sonucu 3.25
  1. yüzdelik dilim medyandır ve 0. ve 100. - quartile(list, 0) ve quartile(list, 4) — min ve max ile aynı en küçük ve en büyük değerlerdir. Aralığının dışındaki bir sıra, uyacak en yakın değerden ziyade bir hatadır:
calc
percentile([1, 2, 3, 4], 101) sonucu Unsupported: A percentile is between 0 and 100
quartile([1, 2, 3, 4], 5) sonucu Unsupported: A quartile is 0, 1, 2, 3 or 4

Yayılım: varyans ve standart sapma

calc
scores = [72, 85, 91, 64, 88]
variance(scores) sonucu 132.5
stddev(scores) to 1 dp sonucu 11.5

Her ikisi de örneklem istatistiğidir: değer sayısının bir eksiğine (n - 1) bölerler. Verileriniz daha büyük bir kitleden alınmış örneklemse genellikle bu kullanılır. En az iki değer gerekir. Yuvarlamak için herhangi bir istatistiğin sonuna to 1 dp ekleyebilirsiniz.

Listeniz bir örnekten ziyade tüm popülasyon olduğunda, n'ye bölünen ve yalnızca bir değere ihtiyaç duyan popülasyon formlarını kullanın:

calc
# Train delays in minutes
delays = [2, 4, 4, 4, 5, 5, 7, 9]
sample_variance(delays) sonucu 4.5714285714
population_variance(delays) sonucu 4
sample_stddev(delays) sonucu 2.1380899353
population_stddev(delays) sonucu 2
Çağrı Farkların kareleri toplamının bölündüğü değer Gereken
variance, sample_variance n - 1 İki değer
population_variance n Bir değer
stddev, stdev, sample_stddev n - 1 İki değer
population_stddev n Bir değer

sample_variance ve sample_stddev, sırasıyla variance ve stddev için daha uzun adlardır; böylece örneklem istatistiği istediğinizi açıkça belirtebilirsiniz. Kısa adlar her zaman örneklem biçimleriydi ve öyle kalır.

Birim içeren listeler

sum, average, median, mode, modes, percentile, quartile, min, max, stddev ve population_stddev birimleri korur, uyumlu birimler arasında dönüşüm yapar. Değerler ilk değerin birimine çevrilir; sonuç da o birimde döner:

calc
commutes = [24 min, 31 min, 27 min, 22 min]
sum(commutes) sonucu 1 hour 44 min
average(commutes) sonucu 26 min
median(commutes) sonucu 25.5 min
percentile(commutes, 25) sonucu 23.5 min
population_stddev(commutes) sonucu 3.3911649916 min
sum([1 kg, 500 g]) sonucu 1.5 kg
modes([1 kg, 500 g, 1 kg, 500 g]) sonucu [0.5 kg, 1 kg]

Varyanslar istisnadır. Gözlemlerin karelerini aldıkları için bu hesaplamada birimler korunmaz; bu nedenle yalnızca birimsiz sayılar kabul edilir.

calc
sample_variance([1 kg, 2 kg]) sonucu Unsupported: A variance squares its observations, so it takes plain numbers; use stddev for amounts with a unit

sort ayrıca yalnızca düz sayılar üzerinde çalışır. sum([1 kg, 3 m]) gibi uyumsuz birimlere sahip değerler üzerinde yapılan bir istatistik, değerleri sessizce atlamak yerine bir hata verir.

Bu işlemlerin tam hesaplama kuralları Hesaplama motorunun garantileri bölümündedir.

Boş listeler

Boş listeyle çağrı Sonuç
sum([]) 0
product([]) 1
count([]), length([]) 0
average([]), median([]), min([]), max([]) Hata
variance([]), stddev([]) Hata

Boş bir liste, genellikle hiçbir şeye uymayan bir filter sonucunda ortaya çıkar, bu nedenle filtrelenmiş bir listenin average değeri, orijinal listenin değerleri olsa bile başarısız olabilir.

Etiketler

Bir etiket, #food gibi bir kelimenin doğrudan ona eklenmiş olduğu bir #'dir. Bu satırı etiketlemek için bir satırın herhangi bir yerine bir etiket yazın. Etiket toplamda hiçbir rol oynamaz, bu nedenle satır hâlâ kendi yanıtını gösterir ve aynı etiketi taşıyan her diğer satırı da bu satırla gruplar. total of #food daha sonra bu satırları toplar:

calc
£12.50 lunch #food sonucu £12.50
£8 coffee #food sonucu £8.00
flights = £420 #trip sonucu £420.00
total of #food sonucu £20.50

Etiketin ara toplamdan farkı budur: satırların yan yana olması gerekmez. Bir haftanın harcamaları, bir gezi ve bir alışveriş listesi aynı blokta bulunabilir; her birinin toplamı altta ayrı gösterilir. O ana kadarki toplamı görmek için fare işaretçisini etiketin üzerinde tutun.

Her istatistik bir etiket üzerinde çalışır. of isteğe bağlıdır, etiket kelimeden önce veya sonra gelebilir ve cevap, diğer herhangi bir satırın yaptığı gibi kendine ait bir etiket veya ad alır:

calc
#food £12.50
#food £8
£420 #trip
total of #food sonucu £20.50
average of #food sonucu £10.25
count of #food sonucu 2
min of #food sonucu £8.00
max of #food sonucu £12.50
#food total sonucu £20.50
Food this week: sum of #food sonucu £20.50
eaten = avg #food sonucu £10.25

sum, total, average, avg, mean, count, min ve max hepsi bu şekilde okunur.

Etiket istatistiği, bir tutarın kullanılabildiği yerde kullanılabilir; hesaplamaya buradan devam edebilirsiniz. Örneğin toplamdan peşinatı çıkarabilir, toplamı bir katsayıyla çarpabilir veya iki etiketin sonuçlarını karşılaştırabilirsiniz:

calc
£20 shop #food sonucu £20.00
£30 meal out #food sonucu £30.00
total of #food - £10 sonucu £40.00
2 * total of #food sonucu £100.00
Cooking kit: total of #food sonucu £50.00

Bir satır istediğiniz kadar etiket taşıyabilir ve her biri bunu sayar. Bir ifadede iki etiket adlandırın ve her ikisini de taşıyan satırları elde edin:

calc
£50 dinner #trip #food sonucu £50.00
£30 taxi #trip sonucu £30.00
£9 sandwich #food sonucu £9.00
total of #trip sonucu £80.00
total of #food sonucu £59.00
total of #trip #food sonucu £50.00

Etiket toplamının kapsamı

Bir etiket ifadesi, düz bir total ifadesinin tam olarak aynı satırlarını tarar ve aynı kuralları takip eder:

  • Önceki toplama kadar kendi bölümünü, bir --- bölücü veya bir # başlığını kapsar.
  • Yalnızca uyumlu tutarları toplar. Yüzdeler, oranlar, birimsiz adetler ve hatalı satırlar dışarıda bırakılır. İpucu bunları belirtir; örneğin 2. satırdaki people = 2 değerinin sayılmadığını söyler.
  • Her miktar bir kez sayılır, bu nedenle daha sonra etiketlenen bir satırın çarptığı etiketli bir fiyat her ikisinden ziyade bu satırda sayılır.

Bu nedenle bir haftanın #food toplamını sonraki haftadan ayırmak için bir başlık yeterlidir:

calc
# Week 1
£20 lunch #food sonucu £20.00
total of #food sonucu £20.00
# Week 2
£30 lunch #food sonucu £30.00
total of #food sonucu £30.00

Eklenecek bir şey olmadığında, satır boş veya sıfır göstermek yerine bunu söyler, bu da genellikle etikette bir yazım hatası veya orada olduğunu unuttuğunuz bir başlık anlamına gelir:

calc
£12.50 lunch #food sonucu £12.50
total of #drinks sonucu Unsupported: no lines tagged #drinks above
ring the plumber #jobs
total of #jobs sonucu Unsupported: no amounts tagged #jobs above

Etiket adlarını yazma

Bir etiket adı harfleri, rakamları, _, - ve / içerebilir, bu nedenle #q1-2026 ve #trip/lisbon her ikisi de bir isimdir. Büyük harfler hiçbir fark yaratmaz:

calc
£20 flight #trip/lisbon sonucu £20.00
£35 hotel #Trip/Lisbon sonucu £35.00
total of #trip/lisbon sonucu £55.00

Bir kelimeye katılmayan bir # eski anlamını korur, bu nedenle zaten yazdığınız hiçbir şey değişmez:

Yazdığınız Anlamı
# Weekly shop Diyezden sonra boşluk olduğu için yorum
5 + 5 # comment Aynı şekilde: diyezden sonraki her şey yok sayılır
C#4 in Hz Diyez nota adına bitişik olduğu için müzikal diyez
#1, Invoice #123 Etiket değil, sayı: etiket adı rakamla başlayamaz
#ff0000, #fff Renk kodu
varlig.app/docs#tags Bölüm işareti içeren web adresi

Etiket adı harfle başlamalıdır. Diyez işaretinden sonra üç, dört, altı veya sekiz onaltılık basamak varsa ifade renk olarak okunur. Bu yüzden #fee renk, #fees ise etikettir.

Nottaki etiketler ve bloktaki etiketler

Notları kenar çubuğunda düzenleyen etiketler Etiketler, bağlantılar ve geri bağlantılar bölümünde açıklanır. Bunların kapsamı hesaplama bloğunun sınırında biter. Blok içindeki #food, yalnızca o satırın toplamlarda gruplandırılmasını sağlar ve kenar çubuğunda görünmez. Bloğun dışındaki not metninde bulunan #food ise hesaplamaları etkilemeden notu sınıflandırır. İkisini de istiyorsanız etiketi iki yere de yazın. Bir fark daha vardır: not etiketini ikinci bir # ile kapatırsanız boşluk içerebilir; hesaplama bloğu etiketi ise her zaman ilk boşlukta biter.

Liste başvurusu

Çağrı İşlevi
range(start,end) Her iki uç dahil, start ile end arasındaki tam sayılar
range(start,end,step) step adımlarıyla sayar; adım negatif veya kesirli olabilir, ancak sıfır olamaz
length(list), count(list) Değer sayısı
sort(list) Küçükten büyüğe; yalnızca birimsiz sayılar
reverse(list) Aynı değerler ters sırayla; her tür değer
unique(list) Her değerin yalnızca ilk geçtiği yeri tutar
slice(list,start,end) start indeksinden end indeksine kadar olan değerler; bitiş indeksi dahil değildir
map(expression,variable,list) Her değer için ifadeyi bir kez hesaplar
filter(condition,variable,list) Koşulu true olan değerleri tutar
calc
range(1, 5) sonucu [1, 2, 3, 4, 5]
range(0, 100, 25) sonucu [0, 25, 50, 75, 100]
range(10, 0, -2) sonucu [10, 8, 6, 4, 2, 0]
scores = [72, 85, 91, 64, 88]
sort(scores) sonucu [64, 72, 85, 88, 91]
reverse(sort(scores)) sonucu [91, 88, 85, 72, 64]
slice(sort(scores), 0, 3) sonucu [64, 72, 85]
unique([4, 2, 4, 6, 2]) sonucu [4, 2, 6]

reverse(sort(…)) en büyüğü önce verir ve slice(sort(…), 0, 3) en düşük üçünü seçer.

Dilimleme sınırları 0 <= start <= end <= length koşulunu karşılamalıdır. Eşit start ve end değerleri boş bir liste oluşturur. scores[0:2] kısaltması yoktur; slice(scores, 0, 2) yazın.

unique değerleri kaydedildikleri gibi tam olarak karşılaştırır, bu nedenle 1 kg ve 1000 g iki farklı değer olarak sayılır ve onuncu ondalık basamakta farklılık gösteren iki sonuç birleştirilmez.

Dönüştürme ve filtreleme

map bir listedeki her değer için bir ifade çalışır. filter bir testi geçen değerleri tutar. Her ikisinde de önce ifade gelir, sonra her bir değer için temsil edecek bir ad, sonra liste gelir:

calc
scores = [72, 85, 91, 64, 88]
map(s + 5, s, scores) sonucu [77, 90, 96, 69, 93]
filter(s >= 80, s, scores) sonucu [85, 91, 88]
count(filter(s >= 80, s, scores)) sonucu 3
average(filter(s >= 80, s, scores)) sonucu 88

filter(s >= 80, s, scores) ifadesini "scores içindeki s değerleri, s >= 80 olanlar" olarak okuyun. Her ikisi de birimler ve para birimiyle çalışır:

calc
map(p * 1.2, p, [£10, £25, £40]) sonucu [£12.00, £30.00, £48.00]
spend = [£42.50, £18.20, £65.00, £23.30]
filter(x > £30, x, spend) sonucu [£42.50, £65.00]
sum(filter(x > £30, x, spend)) sonucu £107.50

Seçtiğiniz ad yalnızca fonksiyon çağrısının içinde geçerlidir. Notun başka bir yerinde aynı adlı değeri değiştirmez:

calc
x = 10
map(x * 2, x, [1, 2, 3]) sonucu [2, 4, 6]
x sonucu 10

filter içindeki koşul bir karşılaştırma veya başka bir doğru/yanlış değeri olmalıdır. Sade bir sayı doğru olarak işlenmez, bu nedenle filter(x, x, [0, 1, 2]) bir hatadır. Boş bir listeyi eşleme veya filtreleme yapmak boş bir liste üretir.

Liste aritmetiği

Her değeri tek bir sayıyla çarpabilir veya bölebilir ve aynı uzunluktaki iki listeyi değere göre ekleyebilir veya çıkarabilirsiniz:

calc
[30, 36, 22] / 40 * 100 sonucu [75, 90, 55]
2 * [3, 1, 4] sonucu [6, 2, 8]
-[5, -3] sonucu [-5, 3]
mocks = [62, 70, 60]
finals = [72, 78, 69]
finals - mocks sonucu [10, 8, 9]
average(finals - mocks) sonucu 9
[1 kg, 2 kg] + [500 g, 500 g] sonucu [1.5 kg, 2.5 kg]
[72, 85] == [72, 85] sonucu true

İlk satır, 40 üzerinden verilen puanları yüzdeye dönüştürür. finals - mocks, her öğrencinin final puanından kendi deneme sınavı puanını çıkarır.

Bazı işlemler listelerde desteklenmez:

  • Bir listeye tek bir sayı eklemek, örneğin scores + 5 gibi. Bunun yerine map(s + 5, s, scores) kullanın.
  • Farklı uzunluklarda listeler ekleme. Uzunlukları eşleştirmek için değerler asla tekrarlanmaz.
  • * ile iki düz liste çarpımı. Çiftli çarpımların toplamı için dot kullanın: dot([2, 3, 1], [4, 5, 10]) 33 eder, örneğin iki kahve 4, üç çay 5 ve bir kek 10'dur. Satır listeleri arasında * matris çarpımıdır ve Vektörler ve matrisler bölümünde ele alınmıştır.

Satırlardan oluşan listeler

Satırlardan oluşan liste küçük bir tablo gibi çalışır. average ve sum, her sütunu yukarıdan aşağıya işler. map ise satırları tek tek işleyebilir:

calc
# Each row is one student: [mock, final]
results = [[62, 72], [70, 78], [60, 69]]
average(results) sonucu [64, 73]
sum(results) sonucu [192, 219]
map(average(r), r, results) sonucu [67, 74, 64.5]

median, min, max ve stddev satır listelerini kabul etmez. Son satırda olduğu gibi satırlar üzerinde map kullanın veya bir sütunu kendi listesine çekin.

Tüm bu işlemler için kesin kurallar ileri matematik referansı'dedir.

Hepsini bir araya getirme

İşte bir akıllı saatten alınan bir haftalık adım sayıları ve günlük hedef:

calc
# Steps, Monday to Sunday
steps = [8200, 10400, 6300, 12000, 9100, 7400, 9600]
goal = 9000
sum(steps) sonucu 63,000
average(steps) sonucu 9,000
median(steps) sonucu 9,100
Days on target: count(filter(s >= goal, s, steps)) sonucu 4
Spread: max(steps) - min(steps) sonucu 5,700
# Roughly 0.75 m per step
walked = sum(steps) * 0.75 m
walked in km sonucu 47.25 km

Ortalama tam olarak hedefe ulaşıyor, ancak sadece dört gün buna ulaştı ve en iyi ile en kötü günler arasında 5.700 adım var. goal değerini değiştirin veya gelecek haftanın sayımlarını yapıştırın ve her satır güncellenir.