เรียน Python แล้วต้องลอง itertools: จาก Loop ธรรมดาสู่การคิดแบบ Data-Driven
ถ้าถามว่ามีโมดูลไหนใน Python ที่ถูกประเมินค่าต่ำกว่าความสามารถจริงมากที่สุด itertools น่าจะติดอันดับต้น ๆ หลายคนรู้จักมันแค่ from itertools import combinations เอาไว้สุ่มจับคู่ หรือสร้างชุดข้อมูล แต่เมื่อเริ่มทำระบบจริง ไม่ว่าจะเป็นเกม, AI, Rule Engine, State Machine หรือ Data Processing จะพบว่า itertools ไม่ได้เป็นแค่เครื่องมือช่วยวนลูป มันคือชุดเครื่องมือที่ช่วยให้เรา "เปลี่ยนวิธีคิด" จาก if ... elif ... elif ... ไปสู่ rules[(state, event)] จาก for ... for ... for ... ไปสู่ product(...) จาก current_player = player1 ... current_player = player2 ไปสู่ next(turns) product(): เครื่องจักรสร้างความเป็นไปได้ หนึ่งในฟังก์ชันที่ผมชอบที่สุดคือ from itertools import product สมมติเราทำเกมการ์ด มี elements = ["Fire", "Water", "Wind"] powers = [10, 20, 30] เราสามารถสร้างการ์ดทุกใบที่เป็นไปได้ด้วย cards = list(product(elements, powers)) ผลลัพธ์ [ ('Fire', 10), ('Fire', 20), ('Fire', 30), ('Water', ...