Tag: iterators

6 รายการ

Blog

ปูต้นฉบับสีส้มแดงกำลังเลื่อนลูกปัดสะสมบนรางข้อมูลสีมิ้นต์ทีละชิ้น
rustiteratorsscan

Rust Iterator::scan: พก state ไปทีละรายการโดยไม่หลุดจาก pipeline

ใช้ scan สร้าง running state ใน iterator พร้อมอธิบายจังหวะหยุด, ownership และกรณีที่ loop ชัดกว่า

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

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

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

พี่โชว์
กระรอกดินต้นฉบับเดินเก็บของจากท้ายถาดมาหน้าตามลูกศรย้อน โดยของในถาดเดิมไม่ถูกสลับ
goslicesiterators

Go slices.Backward: วนจากท้ายโดยไม่กลับลำดับข้อมูลต้นฉบับ

ใช้ iterator ย้อนลำดับใน Go เมื่ออยากอ่านจากท้ายไปหน้า โดยไม่ mutate slice และไม่เขียน index loop เอง

พี่โชว์
กระรอกดินต้นฉบับส่งคู่กุญแจและค่าจากสายพานเข้าสู่กล่องแผนที่บนฉากมิ้นต์
gomapsiterators

Go maps.Insert: เติม map จาก iterator โดยไม่ต้องเขียน loop ซ้ำ

รู้จัก maps.Insert และ iter.Seq2 สำหรับประกอบข้อมูลแบบ pull-free พร้อมขอบเขตเรื่องค่าซ้ำและลำดับ

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

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

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

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

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

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

พี่โชว์