วิธีสร้างและใช้งาน Python Generators

Withi Srang Laea Chi Ngan Python Generators



ในขณะที่ทำงานเป็นนักพัฒนา คุณมักจะต้องทำงานกับค่าข้อมูลที่ไม่มีนัยสำคัญมากมาย การจัดเก็บค่าเหล่านั้นใช้หน่วยความจำก้อนใหญ่ ส่งผลให้ประสิทธิภาพของโค้ดลดลง อย่างไรก็ตาม ใน Python คุณสามารถใช้ตัวสร้างเพื่อหลีกเลี่ยงการสูญเสียนั้นได้

ด้วยเครื่องกำเนิดไฟฟ้า คุณสามารถสร้างค่าของลำดับเฉพาะจำนวนมากได้โดยไม่ต้องเก็บไว้ในหน่วยความจำเลย นอกจากนี้ ฟังก์ชัน 'เครื่องกำเนิดไฟฟ้า' ยังสร้างอ็อบเจ็กต์ที่สร้างค่าเมื่อมีการวนซ้ำ ดังนั้น หากคุณต้องการใช้เครื่องมือสร้าง Python บทช่วยสอนนี้เหมาะสำหรับคุณ ที่นี่เราจะอธิบายวิธีการสร้างและใช้งานเครื่องกำเนิดไฟฟ้า Python

วิธีสร้างและใช้ Python Generators

ตัวสร้าง Python ใช้เพื่อทำงานกับลำดับข้อมูลอย่างมีประสิทธิภาพ โดยหลักแล้วเมื่อต้องจัดการกับชุดข้อมูลขนาดใหญ่หรือเกือบไม่มีที่สิ้นสุด ข้อดีของเครื่องกำเนิด Python คือ:







  1. กระชับ: คุณสามารถกำหนดตัวสร้างได้อย่างง่ายดายในลักษณะที่กระชับซึ่งช่วยเพิ่มความสามารถในการอ่านโค้ด
  2. หน่วยความจำมีประสิทธิภาพ: โดยจะสร้างค่าเดียวพร้อมกันซึ่งใช้หน่วยความจำน้อยลงและเพิ่มประสิทธิภาพ
  3. ฟังก์ชั่นในตัว: ใน Python ตัวสร้างจะมีฟังก์ชันที่กำหนดไว้ล่วงหน้า เช่น next(), iter() และยอมให้ทำงานได้ง่ายขึ้น
  4. คุณลักษณะหยุดชั่วคราวและดำเนินการต่อ: ในขณะที่ทำงานกับอัลกอริธึมที่ซับซ้อน คุณสามารถใช้ฟังก์ชัน 'yield' เพื่อหยุดการทำงานของเครื่องกำเนิดไฟฟ้าชั่วคราวและกลับมาทำงานต่อได้

คุณสามารถสร้างและใช้ตัวสร้างได้หลายวิธีใน Python เราจะแบ่งส่วนนี้เพิ่มเติมเพื่อสาธิตการใช้งานโดยใช้ตัวอย่างที่แตกต่างกัน ก่อนอื่น มาดูไวยากรณ์พื้นฐานกันก่อน:



แน่นอน func_name - - -
ผลผลิต การแสดงออก

“def” กำหนดฟังก์ชัน และใช้ “yield” เพื่อสร้างฟังก์ชัน “generator” อย่างไรก็ตาม อีกวิธีหนึ่งยังช่วยในการสร้างตัวสร้างโดยใช้นิพจน์บรรทัดเดียวเท่านั้น



ฟังก์ชันตัวสร้างเพื่อให้ได้สตริง

มากำหนดฟังก์ชันตัวสร้างเพื่อให้ได้ค่าบางอย่าง:





แน่นอน เครื่องกำเนิดไฟฟ้า - - -
ผลผลิต “นี่คือเครื่องกำเนิดไฟฟ้า”
สำหรับ ค่า ใน เครื่องกำเนิดไฟฟ้า - - -
พิมพ์ - ค่า -

เมื่อเราวนซ้ำโดยใช้ลูป 'for' โปรแกรมจะสร้างค่าที่ระบุซึ่งคุณสามารถพิมพ์ได้โดยใช้ฟังก์ชัน 'print'



ฟังก์ชั่นตัวสร้างเพื่อสร้างตัวนับ

โปรแกรมต่อไปนี้เป็นตัวอย่างสำหรับฟังก์ชันตัวสร้างเพื่อสร้างลำดับตัวเลข:

แน่นอน my_generator - n - -
เคาน์เตอร์ - 0
ในขณะที่ เคาน์เตอร์ - ยังไม่มีข้อความ:
ผลผลิต เคาน์เตอร์
เคาน์เตอร์ + - 1
สำหรับ เคาน์เตอร์ ใน my_generator - 10 - -
พิมพ์ - เคาน์เตอร์ -

ตัวอย่างเช่น หากอินพุตเป็น 10 คุณจะได้รับค่าตั้งแต่ 0 ถึง 9 เมื่อคอมไพล์โค้ดนี้

ชุดฟีโบนัชชีโดยใช้ฟังก์ชันตัวสร้าง

ตอนนี้เรามาใช้ซีรี่ส์ Fibonacci ซึ่งเป็นซีรีย์พื้นฐานที่สุดในการเขียนโปรแกรม:

แน่นอน series_fibonacci - ขีด จำกัด - -
ฉัน - เจ - 0 - 1
ในขณะที่ ฉัน - ขีดจำกัด:
ผลผลิต ฉัน
ฉัน - เจ - เจ - ฉัน + เจ

- series_fibonacci - 6 -

พิมพ์ - ต่อไป - - -
พิมพ์ - ต่อไป - - -
พิมพ์ - ต่อไป - - -
พิมพ์ - ต่อไป - - -
พิมพ์ - ต่อไป - - -
พิมพ์ - ต่อไป - - -

เราจะได้ซีรีย์ดังต่อไปนี้โดยการรันโค้ด:

ขั้นแรก สร้างวัตถุชื่อ 'a' และเรียกใช้ฟังก์ชัน 'generator' โดยมีอินพุตที่ต้องการเป็นอาร์กิวเมนต์

คีย์เวิร์ด next() คือตัววนซ้ำแบบแมนนวล แต่ละครั้งที่เราใช้ next(a) มันจะวนซ้ำค่า 'a' หนึ่งค่า อย่างไรก็ตาม เราสามารถใช้ลูป “for” เพื่อพิมพ์ค่าทั้งหมดของ “a” ได้ในคราวเดียว ดังที่แสดงในตัวอย่างต่อไปนี้:

การใช้ลูป “for” แทนฟังก์ชัน next()

แน่นอน series_fibonacci - ขีด จำกัด - -
ฉัน - เจ - 0 - 1
ในขณะที่ ฉัน - ขีดจำกัด:
ผลผลิต ฉัน
ฉัน - เจ - เจ - ฉัน + เจ

- series_fibonacci - 6 -
สำหรับ ค่า ใน ก :
พิมพ์ - ค่า -

ผลลัพธ์ของการรันโค้ดจะไม่แตกต่างกันเนื่องจากเป็นอีกวิธีหนึ่งในการเขียนโปรแกรมก่อนหน้า:

Generator Expressions ใน Python คืออะไร?

นิพจน์ตัวสร้าง Python เป็นวิธีหนึ่งในการสร้างฟังก์ชัน 'ตัวสร้าง' อย่างกระชับโดยใช้นิพจน์เชิงเส้น นี่คือไวยากรณ์ง่ายๆ:

- การแสดงออก สำหรับ ตัวแปร ใน ทำซ้ำได้ ถ้า เงื่อนไข -

ตัวอย่างเช่น สร้างนิพจน์ตัวสร้างเพื่อคำนวณกำลังสองของเลขคี่ตั้งแต่ 0 ถึง 'n' เมื่อ 'n' เป็นค่าอินพุต

คี่_สแควร์ - - x * x สำหรับ x ใน พิสัย - 10 - ถ้า x % 2 - 0 -
สำหรับ ค่า ใน คี่_สแควร์:
พิมพ์ - ค่า -

รหัสก่อนหน้านี้ให้ผลลัพธ์ดังต่อไปนี้:

บทสรุป

นี่เป็นข้อมูลเกี่ยวกับวิธีการต่างๆ ในการสร้างและใช้งานเครื่องกำเนิดไฟฟ้า Python เราได้อธิบายทุกอย่างเกี่ยวกับนิพจน์ตัวสร้าง Python คุณควรใช้นิพจน์เหล่านี้หากคุณพิจารณาใช้ตัวสร้างในโปรเจ็กต์ใดๆ ของคุณ เนื่องจากพวกมันมีประสิทธิภาพมากกว่าในทุกแง่มุมของการเขียนโปรแกรม