8
เลือกรายการให้เรียบ
พิจารณากระบวนการ "เลือก" รายการที่ซ้อนกัน การเลือกมีการกำหนดดังนี้: หากอาร์กิวเมนต์เป็นรายการให้นำองค์ประกอบจากรายการโดยการสุ่ม (สม่ำเสมอ) แล้วเลือกจากสิ่งนั้น หากการโต้แย้งไม่ใช่รายการเพียงแค่ส่งคืน ตัวอย่างการนำไปใช้ใน Python: import random def pick(obj): if isinstance(obj, list): return pick(random.choice(obj)) else: return obj เพื่อความง่ายเราจะสมมติว่ารายการแบบซ้อนมีเพียงจำนวนเต็มหรือรายการแบบซ้อน หากมีรายการใด ๆ ก็เป็นไปได้ที่จะสร้างเวอร์ชันที่แบนราบซึ่งไม่สามารถแยกออกได้pickเช่นการเลือกจากรายการนั้นให้ผลลัพธ์ที่เหมือนกันโดยมีความน่าจะเป็นเหมือนกัน ตัวอย่างเช่น "pick-flattening" รายการ [1, 2, [3, 4, 5]] ให้ผลผลิตรายการ [1, 1, 1, 2, 2, 2, 3, 4, 5] . เหตุผลที่เรียบง่ายไม่ถูกต้องเนื่องจากองค์ประกอบของรายการย่อยมีความน่าจะเป็นต่ำกว่าที่จะถูกเลือกเช่นในรายการ[1, [2, 3]]1 มีโอกาสที่จะถูกเลือก 2/4 …