0Pricing
Coding Interview Prep · บทเรียน

แจกแจงด้วย itertools

ผลคูณ การจัดหมู่ และการเรียงสับเปลี่ยน

แจกแจงด้วย itertools เป็นบทเรียน Coding Interview Prep ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Coding Interview Prep และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Coding Interview Prep มีบทเรียนทั้งหมด 4 บทเรียน

ให้โมดูลการวนซ้ำจัดการลูป

โมดูลการวนซ้ำของไพทอนจะสร้าง combinations และการเรียงลำดับให้ จึงเขียนโค้ดลูปน้อยลงและผิดพลาดน้อยลง 🙂

นำเข้าโมดูลก่อน

ทุกอย่างอยู่ในโมดูลเดียวกัน จึงเริ่มด้วยการนำเข้าโมดูลการวนซ้ำ จากนั้นจึงเรียกใช้ product, permutations และ combinations ได้โดยตรง

import itertools

ใช้ product แทนลูปซ้อนกัน

ใช้ product แทนลูปซ้อนกันหลายชั้นที่วนผ่านทางเลือกชุดเดียวกัน โดยจะให้ทูเพิลของตัวเลือกทุกชุดจากช่วงที่กำหนด

for combo in itertools.product(range(3), repeat=2):
    print(combo)

ใช้ permutations เพื่อเรียงลำดับ

เมื่อลำดับมีความสำคัญ permutations จะแสดงการจัดเรียงสิ่งของทุกแบบ เหมาะอย่างยิ่งสำหรับการลองครบทุกกรณีของปัญหาแนวพนักงานขายเดินทางขนาดเล็ก

for p in itertools.permutations([1, 2, 3]):
    print(p)

ใช้ combinations เพื่อเลือก

เมื่อลำดับไม่มีความสำคัญ combinations จะเลือกกลุ่มที่มีขนาด r ทุกกลุ่ม เหมาะสำหรับเลือกเซตย่อยของสิ่งของมาทดสอบ

for c in itertools.combinations([1, 2, 3, 4], 2):
    print(c)

permutations กับ combinations

ความแตกต่างสำคัญคือลำดับ โดย permutations ถือว่า (1,2) และ (2,1) เป็นคนละแบบกัน ในขณะที่ combinations นับเป็นการเลือกแบบเดียวกัน

ระวังการเพิ่มขึ้นของจำนวน

จำนวน permutations เพิ่มขึ้นตาม n! และพุ่งสูงอย่างรวดเร็ว แม้ n เท่ากับ 11 ก็มีการเรียงลำดับมากกว่าสี่สิบล้านแบบแล้ว ดังนั้นควรรักษา n ให้เล็ก

ทำงานแบบทยอยสร้าง

ฟังก์ชันเหล่านี้เป็นตัวสร้าง โดยให้ผลลัพธ์ทีละรายการโดยไม่สร้างรายการขนาดมหึมา หน่วยความจำจึงยังใช้ไม่มากระหว่างการวนซ้ำ

ใช้ร่วมกับการตรวจสอบ

สร้างตัวเลือกที่เป็นไปได้ แล้วเก็บไว้เฉพาะตัวเลือกที่ผ่านการทดสอบ รูปแบบนี้เปลี่ยนการค้นหาที่ยากให้เป็นลูปสั้น ๆ ที่อ่านเข้าใจง่าย

best = min(itertools.permutations(cities), key=tour_length)

การเลือกแบบให้ซ้ำได้

ต้องการเลือกสิ่งของที่สามารถซ้ำได้หรือไม่ ให้ใช้การเลือกแบบให้ซ้ำได้ เพื่ออนุญาตให้สมาชิกตัวเดิมปรากฏมากกว่าหนึ่งครั้งในกลุ่ม

เลือกเครื่องมือให้เหมาะสม

ให้ถามสองข้อ ได้แก่ ลำดับมีความสำคัญหรือไม่ และสมาชิกสามารถซ้ำกันได้หรือไม่ คำตอบจะชี้ตรงไปยังฟังก์ชันที่ถูกต้องของโมดูลการวนซ้ำ

ตรวจสอบความเข้าใจ

ต้องแจกแจงทุกวิธีเลือกสิ่งของ 3 ชิ้นจาก 6 ชิ้น โดยไม่สนใจลำดับ

สรุปทบทวน

ใช้ product, permutations และ combinations เพื่อแจกแจงอย่างเป็นระเบียบ เลือกเครื่องมือโดยถามว่าลำดับมีความสำคัญหรือไม่และสมาชิกซ้ำได้หรือไม่ พร้อมระวังจำนวนที่เพิ่มขึ้น 🚀

คำถามที่พบบ่อย

บทเรียน “แจกแจงด้วย itertools” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “แจกแจงด้วย itertools” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Coding Interview Prep ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Coding Interview Prep มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “แจกแจงด้วย itertools”

ผลคูณ การจัดหมู่ และการเรียงสับเปลี่ยน คุณปฏิบัติ Coding Interview Prep ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Coding Interview Prep หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Coding Interview Prep บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “แจกแจงด้วย itertools” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Coding Interview Prep นี้ได้ไหม

ได้ บทเรียน Coding Interview Prep ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การลองทุกกรณีเป็นกลยุทธ์ที่ใช้ได้
  2. แจกแจงด้วย itertools
  3. แจกแจงเซตย่อยด้วยบิตมาสก์
  4. ลดพื้นที่ค้นหาอย่างชาญฉลาด
← กลับไปที่ Coding Interview Prep