Tag: itertools

7 รายการ

Blog

งูต้นฉบับกำลังแบ่งด้ายจากหลอดเดียวเป็นสองทาง โดยทางช้าค่อย ๆ มีกองด้ายสำรองสะสม
pythonitertoolsiterators

Python itertools.tee: แยก iterator ได้ แต่ต้องรู้ว่า buffer โตตรงไหน

อธิบาย shared source, backlog เมื่อ consumer วิ่งไม่เท่ากัน และวิธีเลือก list หรือ tee ให้ตรงงาน

พี่โชว์
งูต้นฉบับวางหน้ากากช่องเขียวและเทาบนสายผลไม้ ให้เฉพาะชิ้นใต้ช่องเขียวผ่านไป
pythonitertoolsiterators

Python itertools.compress: ให้ boolean mask กับข้อมูลเดินพร้อมกันแบบ lazy

คัดสมาชิกด้วย itertools.compress พร้อมรับมือ selector สั้นยาวไม่เท่ากัน และแยกกรณีที่ควร validate ก่อน

พี่โชว์
งูสีเขียวต้นฉบับกำลังวางเมล็ดสีเขียวลงถ้วยต่อเนื่อง แต่ละถ้วยเก็บผลรวมจากถ้วยก่อนหน้า
pythonitertoolsstreaming

Python itertools.accumulate: เก็บสถานะสะสมโดยไม่สร้างลูปข้างเคียง

ใช้ accumulate ทำ running total และ state transition พร้อม initial value ที่ช่วยให้ขอบเขตข้อมูลอ่านง่าย

พี่โชว์
นากกายสีมิ้นต์จัดกล่องเล็กเรียงเป็นแถวบนโต๊ะทำงานสว่าง
pythonstdlibitertools

Python itertools.batched: หั่นลิสต์เป็นก้อนคงที่แบบสั้น ๆ

สอนใช้ itertools.batched แบ่ง iterable เป็นทูเปิลขนาด n พร้อม unittest ที่รันจริง อ้างอิง docs.python.org

น้องกาย
งูต้นฉบับจัดเมล็ดสีที่อยู่ติดกันลงถาด แต่มีเมล็ดสีเดียวกันอีกกองถูกคั่นอยู่ไกลออกไป
pythonitertoolsdata-processing

Python itertools.groupby: รวมข้อมูลที่ติดกัน ไม่ใช่ SQL GROUP BY

เข้าใจ adjacent runs, shared iterator และเหตุผลที่ต้อง sort ก่อนเมื่ออยากรวม key ทั้งชุด พร้อม unittest กันบั๊กข้อมูลสลับกลุ่ม

พี่โชว์
ลูกบอลสีมิ้นต์เรียงเป็นแถวโยงด้วยเส้นอำพันเป็นคู่ และนากกายยืนปลายแถว
pythonitertoolsstdlib

itertools.pairwise: เดินคู่ติดกันในลำดับโดยไม่เขียน zip เอง

อธิบาย pairwise ตั้งแต่ Python 3.10 เทียบกับ zip(seq, seq[1:]) พร้อม unittest

น้องกาย
งูสีมิ้นต์ต้นฉบับกำลังจัดเมล็ดเป็นถาดเท่ากันและหยุดตรวจถาดสุดท้ายที่ขาดหนึ่งช่อง
pythonitertoolsdata-processing

Python itertools.batched แบบ strict: จับข้อมูลชุดสุดท้ายที่มาไม่ครบ

แบ่ง iterable เป็นก้อนแบบ lazy และใช้ strict=True เมื่อต้องการให้จำนวนข้อมูลหารขนาด batch ลงตัว พร้อม unittest

พี่โชว์