‫Sonuncusu hakkında konuşalım ve bu biraz gelişmiş ve ilk başta kavraması biraz zor olabilir, ancak var olduğunu
‫bilmek iyidir ve kendi başınıza pratik yaparak ve bazı belgeleri okuyarak bu konuda
‫daha fazla bilgi edinebilirsiniz.
‫Şimdi Reduce, python yerleşik işlevinin bir parçası olarak gelmiyor.
‫reduce kullanabilmemiz için şöyle bir şey yapmamız gerekiyor.
‫Şimdi, bunu daha önce hiç görmediniz ve bu, kursun modüller bölümünde ele alacağımız
‫bir konu.
‫Ancak esasen burada olan şey, Python yorumlayıcısını ve Python paketini indirdiğimizde, bizim durumumuzda,
‫bu dalgalanma bunu bizim için zaten yapıyor.
‫Bu funky araçlarından bir şeyler içe aktarabiliriz ve funk araçları, python kurulumuyla birlikte gelen işlevsel araçlar
‫için kullanabileceğimiz bir araç kemeri olarak adlandırdığımız şeydir.
‫Ve oradan da içe aktarabileceğimiz belirli bir işlev var.
‫Yani diyorum ki, hey, bu araç kemerindeki funk araçlarından, reduce işlevini içe aktarmanızı istiyorum, böylece
‫kodumuzda tekrar kullanabiliriz, kursta daha sonra ele alacağımız bir şey.
‫Şimdilik bu satırı kopyalayıp yapıştırın.
‫Şimdi listemizden bazılarını çıkaralım ve burada reduce kullanalım.
‫Şimdi küçültmek için birkaç şeye ihtiyacımız olacak.
‫Birincisi.
‫Fonksiyona ihtiyacımız var.
‫Ve sonra diziye ya da veriye ihtiyacımız var.
‫Peki işlevi ne olacak?
‫Öncelikle verilerimiz listemiz olacak.
‫Bu yüzden listemin ve indirgenmiş fonksiyonun ilginç bir şey yapmamıza izin verdiğini söyleyeceğim.
‫Diyelim ki ona bir işlev verebilirim ve bu işlev onu akümülatör olarak adlandıracaktır.
‫Ve akümülatör iki parametre alır.
‫Ve unutmayın, bu reduce tarafından çağrılacak.
‫Dolayısıyla Reduce, kendisine verdiğimiz verilerden, yani benim listemden bu iki parametreyi vermekle
‫sorumlu olacak.
‫İlk parametre akümülatör ya da benim durumumda ACC dediğimiz şey olacak.
‫Ve sonra burada bir madde olacak.
‫Şimdi gerçekten ilginç olan nokta, listemi indirgemeden ilk kez geçirdiğimizde, ilk öğeyi
‫alacağız.
‫İlk öğe bu parametrede olacaktır.
‫Ancak, başlangıçta bu Assisi nedir?
‫Buradaki parantezleri kaldırırsam.
‫Ve size azaltmayı göstereceğim.
‫Fonksiyona sahip olduğumuzu görüyorsunuz.
‫Bizim durumumuzda listemiz olacak olan dizi.
‫Ve sonra başlangıç ve ilk, akümülatörün ne olacağıdır.
‫Bir kez daha, henüz çağırmayacağımız bir akümülatör fonksiyonuna sahip olacağımızı varsayalım.
‫Reduce bunu bizim için yapacak.
‫Listeyi vereceğim.
‫Ya da üzerinde yinelemek istediğimiz veriler.
‫Ve sonra ona sıfır başlangıç değeri vereceğim.
‫Yani üç tane var.
‫Buradaki parametreler ya da verdiğimiz üç argüman.
‫Parantezleri kapatayım.
‫Al bakalım.
‫Bunu biraz daha büyütelim ve heceleyebildiğimden emin olalım.
‫Şimdi burada, ilk öğe listemdeki ilk öğe ne ise o olacak.
‫Ve eğer bir şey vermezsek akümülatör varsayılan olarak sıfır olacaktır.
‫Ya da bizim durumumuzda, akümülatörün sıfır olacağını söyledik.
‫Yapacağımız ilk şey, akümülatör artı öğeyi döndürmek olacak.
‫Tamam.
‫Şimdi bunları teker teker inceleyelim.
‫Görebilmemiz için akümülatörü ve öğeyi buraya yazdıracağım.
‫Ve sonra bu kodu çalıştıracağım.
‫15. satırdaki nesne yinelenebilir değildir.
‫Ve bu biraz zor, ama aslında artık listeye ihtiyacımız yok çünkü Reduce bizim için ilginç
‫bir şey yapacak.
‫Bu yüzden şimdilik bunu kaldıralım ve reduce bize yazdırmada ne verirse onu döndürelim.
‫Çalıştır'a tıklarsam.
‫Şuna bak.
‫Pekala, az önce ne oldu?
‫Bir göz atalım.
‫Azalt.
‫Ona verdiğimiz yinelenebilirden bir şeyi, bir tür değeri azaltmamızı sağlar.
‫Adım adım gidelim.
‫Benim listem var ve listem reduce aracılığıyla akümülatöre uygulanacak.
‫Akümülatör listemi alacak ve ilk geçişte yapacağı ilk şey şu olacak: Hey,
‫akümülatörüm ne olacak?
‫Sıfıra ayarlayacağım.
‫Yani akümülatörden ilk geçiş sıfır olacaktır.
‫Bir öğe bir olacak, burada gördüğümüz şey bu ve sıfır artı bir ekleyeceğiz.
‫Şimdi bir tane iade ettik.
‫Şimdi ikinci yol.
‫Ne olacak?
‫Akümülatörden ikinci geçiş, bunun döndürdüğü şey olacak.
‫Dolayısıyla, bu döndürülen her neyse bir sonraki geçiş akümülatöre doldurulacaktır.
‫Yani bizim durumumuzda, sıfır artı bir bir olacaktır.
‫Bir eşya olacak.
‫Bir artı iki üç eder.
‫Yani bir artı iki eşittir üç.
‫Dolayısıyla, bir sonraki seferde akümülatör üç olacak ve burada görebileceğiniz gibi içinden
‫geçtiğimiz şey de üç olacak.
‫Ve üç artı üç altı eder.
‫Tüm bu değerleri topladık ve tek bir altı sayısı döndürdük.
‫Listemizi, bizim durumumuzda akümülatör kullanarak manipüle ettiğimiz bir tür veriye indirgedik.
‫Ama burada istediğim her şeyi yapabilirdim.
‫Örneğin, bunu 10'a eşit değil olarak değiştirirsem, Çalıştır'a tıkladığımda ne olacağını düşünüyorsunuz?
‫16 alıyorum çünkü ilk akümülatörümü on ile başlattım, yani o zaman on artı birdi, böyle devam
‫etti.
‫Şimdi gerçekten çok güçlü bir şekilde azaltıyor çünkü onunla birçok şey yapabiliyorsunuz.
‫Gerçekten çok esnek.
‫Ve aslında kaputun altında, harita filtresi gibi işlevler aslında kaputun altındaki bu azaltmayı kullanıyor, böylece aslında azaltma
‫kullanarak kendi harita ve filtre işlevinizi oluşturabilirsiniz.
‫Yine, reduce ilk başta anlaşılması biraz zordur ve gerçekten kullanmak için biraz pratik yapmak gerekir,
‫ancak ileri düzey programcıların gerçekten çok sevdiği şeylerden biridir ve kariyeriniz boyunca daha
‫iyi ve daha iyi hale geldikçe daha fazlasını göreceksiniz.
‫Bir sonrakinde görüşürüz.
‫Güle güle.