التعداد باستخدام itertools
الجداءات والتوليفات والتباديل
التعداد باستخدام itertools درس مجاني في Competitive Programming Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Competitive Programming Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.
دعوا itertools تتولى الحلقات
تولّد itertools التوافيق والترتيبات نيابةً عنكم، فتكتبون عددًا أقل من تعليمات الحلقات وترتكبون أخطاءً أقل. 🙂
استوردوها أولًا
كل شيء موجود في وحدة واحدة، لذا ابدؤوا بـ import itertools. وبعد ذلك يمكنكم استدعاء product وpermutations وcombinations مباشرةً.
import itertoolsproduct للحلقات المتداخلة
استخدموا 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)combinations_with_replacement
هل تحتاجون إلى اختيار عناصر يمكن أن تتكرر؟ استخدموا combinations_with_replacement للسماح بظهور العنصر نفسه أكثر من مرة في المجموعة.
اختاروا الأداة المناسبة
اطرحوا سؤالين: هل يهم الترتيب، وهل يمكن أن تتكرر العناصر؟ ستقودكم الإجابتان مباشرةً إلى دالة itertools الصحيحة.
تحقق سريع
يجب عليكم تعداد كل طريقة لاختيار 3 عناصر من أصل 6، مع عدم أهمية الترتيب.
مراجعة
استخدموا product وpermutations وcombinations للتعداد بطريقة واضحة. اختاروا الأداة بالسؤال عما إذا كان الترتيب مهمًا وما إذا كانت العناصر تتكرر، وانتبهوا إلى النمو. 🚀
الأسئلة الشائعة
هل درس «التعداد باستخدام itertools» مجاني؟
نعم — نص درس «التعداد باستخدام itertools» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Competitive Programming Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.
ماذا ستتعلم في «التعداد باستخدام itertools»؟
الجداءات والتوليفات والتباديل تتمرن على Competitive Programming Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Competitive Programming Academy؟
لا تُشترط خبرة سابقة. Competitive Programming Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «التعداد باستخدام itertools»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Competitive Programming Academy هذا؟
نعم. كل درس في Competitive Programming Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- القوة الغاشمة استراتيجية صالحة
- التعداد باستخدام itertools
- تعداد المجموعات الجزئية بقناع البتات
- تقليص مساحة البحث بذكاء