Python üreteci

Yineleyiciler Python’da √∂nemli bir rol oynar. Yinelenebilecek bir nesne olu≈üturmanƒ±za izin verirler. Bir for in d√∂ngusu aracƒ±lƒ±ƒüƒ±yla eri≈üilebilen verileri depolamak için iyi bir yoldur.

Yineleyicilerle ilgili sorun, bir tane olu≈üturmak için çok fazla çalƒ±≈üma gerektirmesidir. Yararlƒ±dƒ±rlar, ancak bir tanesinin çalƒ±≈ümasƒ± için çok fazla kod yazmanƒ±z gerekir. √úreteçler bu sorunun ç√∂zulmesine yardƒ±mcƒ± olur.

Bu kƒ±lavuzda, Python ureteçlerinin ne olduƒüu ve bunlarƒ± neden kullanmanƒ±z gerektiƒüi hakkƒ±nda konu≈üacaƒüƒ±z. Nasƒ±l çalƒ±≈ütƒ±klarƒ±nƒ± anlamanƒ±za yardƒ±mcƒ± olmak için Python’da bir olu≈üturucu da uygulayacaƒüƒ±z.

Daha fazla uzatmadan başlayalım!

Jeneratör nedir?

Olu≈üturucu, Python’da yineleyici olu≈üturmanƒ±n basit bir yoludur. √úzerinde yineleme yapabileceƒüiniz bir nesne d√∂nduren bir i≈ülevdir.

√úreticilere genellikle s√∂zdizimsel ≈üeker denir. Bunun nedeni, Python’a mutlaka yeni i≈ülevler eklememeleridir. Kodunuzu daha verimli hale getirmeye yardƒ±mcƒ± olurlar.

Yineleyiciler gibi, bir olu≈üturucu uzerinde yalnƒ±zca bir kez yineleme yapabilirsiniz. Bunun nedeni, olu≈üturucularƒ±n kaç kez yinelendiklerini takip etmeleri ve sƒ±fƒ±rlanamamasƒ±dƒ±r.

Bir Python yineleyicisine bir göz atalım:

< p>Katƒ±lƒ±mcƒ±larƒ±n %81’i, bir eƒüitim kampƒ±na katƒ±ldƒ±ktan sonra teknik i≈ü beklentileri konusunda daha emin hissettiklerini belirtti. Bugun bir eƒüitim kampƒ± ile e≈üle≈ütirin.

Ortalama bir eƒüitim kampƒ± mezunu, bir eƒüitim kampƒ±na ba≈ülamaktan ilk i≈üini bulmaya kadar, kariyer geçi≈üinde altƒ± aydan daha az zaman harcadƒ±.

Bu kod, adƒ±nda bir yineleyici olu≈üturur. Kurabiye. Verileri bu yineleyiciden geçirdiƒüinizde yinelenebilir bir nesneye d√∂nu≈üturulecektir. Bu, bir for in d√∂ngusu kullanarak veriler arasƒ±nda d√∂ngu yapabileceƒüiniz anlamƒ±na gelir. Bu koda bakƒ±yor ve gerçekten uzun olduƒüunu du≈üunuyorsanƒ±z, çunku √∂yle.

√úreticiler bu kodu kƒ±saltmamƒ±za yardƒ±mcƒ± olabilir. Yukarƒ±daki yineleyicimiz için bir jenerat√∂r yazalƒ±m:

Kodumuzun boyutu √∂nemli √∂lçude kuçultuldu. Bunun nasƒ±l çalƒ±≈ütƒ±ƒüƒ±nƒ± tartƒ±≈üalƒ±m.

Oluşturucu, dönuş ifadesi yerine getiri anahtar kelimesine sahip bir işlevdir. Getiri ifadeleri bir işlevden bir değer döndurur.

Bir getiri ifadesi ile bir geri d√∂nu≈ü ifadesi arasƒ±ndaki fark, bir geri d√∂nu≈ü ifadesinin bir i≈ülevin çalƒ±≈ümasƒ±nƒ± durdurmasƒ±, verim ifadesinin ise i≈ülevi duraklatƒ±p devam etmesidir. yineleniyor.

Basit olu≈üturucu i≈ülevimizi yinelemeye çalƒ±≈üalƒ±m:

Kodumuz şunu döndurur:

Ahududu

< p>Raspberry

…

Bu kod, biz programƒ± durdurana kadar tekrar etmeye devam eder. Bunun nedeni, çalƒ±≈ütƒ±rƒ±lan bir while d√∂ngusu kullanmamƒ±zdƒ±r. Bu çoƒüu durumda pek kullanƒ±≈ülƒ± deƒüildir. Bir eylem gerçekle≈ütirildiƒüinde duran bir ureteç yazalƒ±m.

Python Oluşturucu Nasıl Yazılır

Bir konsola yazdƒ±rmak istediƒüimiz çerezlerin listesi. Bu liste ≈üuna benzer:

["Raspberry‚", "Choc-Chip‚", "Cinnamon‚", &ldquo ;Yulaf‚"]

Bunlarƒ± konsola yazdƒ±rmak için, basit bir jenerat√∂r yedim. Yeni bir Python dosyasƒ± a烱n ve a≈üaƒüƒ±daki kodu yapƒ±≈ütƒ±rƒ±n:

Olu≈üturucumuz, belirlediƒüimiz listedeki her çerezi inceler ve her bir çerezi ayrƒ± ayrƒ± d√∂ndurur. Bu jenerat√∂r henuz çalƒ±≈ümƒ±yor. √úzerinde yineleme yapmak için bir for d√∂ngusu kullanmalƒ±yƒ±z:

cookie_list, d√∂rt çerezin bir listesini saklar. Ardƒ±ndan, cookie_list içindeki deƒüerler arasƒ±nda yineleme yapmak için olu≈üturucumuzu kullanan bir for d√∂ngusu kurduk.

For d√∂ngumuzdeki her yineleme için, olu≈üturulan nesne yazdƒ±rƒ±lƒ±r. konsola:

Ahududu

"Python.Engineering hayatıma en ihtiyacım olduğu anda girdi ve hızlı bir şekilde bir bootcamp ile eşleşmeme yardımcı oldu. Mezun olduktan iki ay sonra, hayattaki değerlerim ve hedeflerim ile uyumlu ruya işim!"

Venus, Rockbot’ta Yazƒ±lƒ±m Muhendisi

Choc-Chip

Tar烱n

Yulaf

Başardık! Bu oluşturucu, cookie_list değişkenindeki her değer yinelenene kadar değerleri döndurur.

Üreticilerin bir dizi kullanım durumu vardır. Diyelim ki, toplamak istediğimiz bir sipariş fiyatları listemiz var. Bunu aşağıdaki kodu kullanarak yapabiliriz:

Bu oluşturucu, bir liste. Her bir öğe tekrarlandıktan sonra, uretici siparişlerin mevcut toplam değerini verecektir. Jeneratörumuzu kullanan bir for döngusu yazalım:

Kodumuz şunu döndurur:

2.3

4.8

6.75

12.75

20.25

22.4

Oluşturucumuz order_list değişkenindeki tum siparişlerin kumulatif değerini hesapladı. Listedeki her yineleme yeni kumulatif değeri döndurur.

Nasıl yapılır? Bir Jeneratör İfadesi Yazın

Jeneratörleri yazmak bir yineleyiciden zaten daha kolay. Jeneratör ifadeleri sayesinde daha temiz kod yazma arayışımızın durmasına gerek yok.

Jeneratör ifadeleri liste anlamalarına benzerler. Jeneratör ifadeleri, bir jeneratör gibi her seferinde bir öğe uretir. Bu, tum bir liste ureten bir liste kavrayışından farklıdır. hepsi aynı anda.

√áerezlerimiz için bir jenerat√∂r yazalƒ±m √∂rneƒüimiz:

Biz cookie_list deƒüi≈ükeninde bir çerez listesi tanƒ±mladƒ±. Daha sonra bir jenerat√∂r ifadesi yaratƒ±rƒ±z. Bu ifade, liste kavramalarƒ± için s√∂zdizimini kullanƒ±r, ancak buyuk bir farkla: liste kavramalarƒ± k√∂≈üeli parantezler içinde tanƒ±mlanƒ±rken, olu≈üturucular yuvarlak parantezler içinde tanƒ±mlanƒ±r.

Yinelenen bir for döngusu oluşturalım. ifade:

Kodumuz şunu döndurur:

Ahududu

Çikolatalı cips

Tar烱n

Yulaf

Bu olu≈üturucunun yanƒ±tƒ±, ilk √∂rneƒüimizdekiyle aynƒ±dƒ±r. S√∂zdizimimiz √∂nemli √∂lçude daha a烱ktƒ±r.

Bir olu≈üturucu ifadesi kullanƒ±larak bildirilen bir olu≈üturucu uzerinde yineleme yaptƒ±ƒüƒ±nƒ±zda, onu bir i≈ülev olarak çaƒüƒ±rmadƒ±ƒüƒ±nƒ±zƒ± unutmamak √∂nemlidir. cookie_generator olu≈üturucumuz hiçbir giri≈ü deƒüerini kabul etmez: cookie_list listesi uzerinde yinelemesi gereken kodu zaten içerir.

Yapmanƒ±z gereken ureteç ifadeleri s√∂zdizimini yalnƒ±zca basit bir i≈ülev gerçekle≈ütiren bir ureteç yazmanƒ±z gerektiƒüinde kullanƒ±n. Bir deƒüerler listesi yazdƒ±rmak buna iyi bir √∂rnektir; Bir listedeki deƒüerleri belirli bir sayƒ± ile çarpmak da ba≈üka bir iyi √∂rnektir.

Bunun nedeni, olu≈üturucu ifade s√∂zdiziminin a烱k olmasƒ±na raƒümen, esas olarak tek satƒ±rlƒ± ifadeler için tasarlanmƒ±≈ü olmasƒ±dƒ±r. Olu≈üturucunuz birden fazla kod satƒ±rƒ± kullanacaksa, bunu bu makalede daha √∂nce tartƒ±≈ütƒ±ƒüƒ±mƒ±z s√∂zdizimini kullanarak bir olu≈üturucu i≈ülevi olarak yazƒ±n.

Jeneratörler Neden Kullanılır?

Jeneratörlerin kullanılmasının başlıca nedeni, yineleyicilerden daha kısa olmalarıdır.

Jenerat√∂rler bir fonksiyon gibidir ve çalƒ±≈ümak için herhangi bir __init__, __iter__ veya __next__ ifadesine ihtiyaç duymaz.Bu, bu uç ifadenin tumunu gerektiren bir yineleyiciden farklƒ±dƒ±r.Bu davranƒ±≈ü, bir olu≈üturucuyu yazarken yapabileceƒüinizden çok daha az kod satƒ±rƒ±nda uygulayabileceƒüiniz anlamƒ±na gelir. iterator.

√ústelik, ureteçler belleƒüi kullanmada verimlidir. √úreteçler bir seferde yalnƒ±zca bir √∂ƒüe uretir. Bir sonucu d√∂ndurmeden √∂nce bellekte tam bir dizi olu≈üturmazlar. Bu, geni≈ü bir veri listesi uzerinde yineleme yapmanƒ±z gerekiyorsa, olu≈üturucular çok pratiktir.

Bunun çalƒ±≈üma ≈üekli, yineleyicilerin tembel bir deƒüerlendirme y√∂ntemi kullanmasƒ±dƒ±r.Yalnƒ±zca yinelenebilir bir nesnenin sonraki √∂ƒüesini olu≈ütururlar. ct bu √∂ƒüe istendiƒüinde.

Sonuç (ve Meydan Okuma)

Jeneratörler daha Pythonic bir yineleyici oluşturmanıza olanak tanır.

Jenerat√∂rler bunu kolayla≈ütƒ±rƒ±r __init__, __iter__ veya __next__ ifadeleri yazmak zorunda kalmadan yineleyici protokolunu kullanarak nesneleri yazmak. Jenerat√∂rler fonksiyonlar olarak tanƒ±mlanƒ±r. Bir olu≈üturucuyu durdurmak ve normal i≈ülemlerine geri d√∂nmeden √∂nce ana programa bir deƒüer iletmek için verim ifadesini kullanƒ±rlar.

Bir meydan okuma arƒ±yorsanƒ±z, i≈üte birkaç fikir:

  • Bir dizeyi tersine çeviren bir olu≈üturucu yazƒ±n.
  • Bir deƒüerler listesinden yalnƒ±zca belirli bir kelimeyi içeren deƒüerleri d√∂nduren bir olu≈üturucu yazƒ±n.
  • Listedeki her sayƒ±yƒ± ikiyle çarpan bir olu≈üturucu yazƒ±n.

Daha fazla okumak için nasƒ±l yapƒ±lacaƒüƒ± konusundaki eƒüiticimize bakƒ±n. Python yineleyicileri yazƒ±n ve kullanƒ±n. Artƒ±k bir uzman gibi Python’da olu≈üturucularla çalƒ±≈ümaya ba≈ülamaya hazƒ±rsƒ±nƒ±z!

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method