العثور على الفهرس لا القيمة فقط
تتبّع المواضع باستخدام enumerate
العثور على الفهرس لا القيمة فقط درس مجاني في Coding Interview Prep على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Coding Interview Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Coding Interview Prep 4 دروس في المجموع.
المواضع مهمة
غالبًا لا تكون الإجابة هي القيمة، بل موضعها. تطلب مسائل المسابقات كثيرًا فهرسًا يبدأ من 1 أو من 0، لذا تتبّع المواضع.
a = [4, 1, 7, 3]العثور باستخدام .index()
يعيد a.index(x) موضع أول تطابق. من السهل كتابته، لكنه يمسح من اليسار إلى اليمين بزمن O(n).
pos = a.index(7) # 2القيم المفقودة ترفع أخطاء
إذا لم تكن القيمة موجودة، يرفع .index() خطأ ValueError ويتسبب في انهيار وقت التشغيل. تحقّق من العضوية أولًا عندما لا تكون متأكدًا.
if x in a:
pos = a.index(x)التكرار باستخدام enumerate
يوفّر لك enumerate الفهرس والقيمة معًا في كل خطوة، وهي الطريقة الواضحة لتتبّع المواضع أثناء المسح.
for i, v in enumerate(a):
print(i, v)ابدأ enumerate من الواحد
تطلب كثير من أنظمة التحكيم مواضع تبدأ من 1. مرّر start=1 إلى enumerate ليكون الفهرس الأول هو 1، بما يطابق نص المسألة.
for i, v in enumerate(a, start=1):
...فهرس القيمة العظمى
للعثور على موضع القيمة العظمى، امسح المصفوفة وتذكّر أفضل فهرس، لأن max(a) وحدها تعطي القيمة فقط.
best = 0
for i, v in enumerate(a):
if v > a[best]:
best = iطريقة argmax الأنيقة
حيلة مختصرة: اربط كل فهرس بقيمته وخذ القيمة العظمى حسب القيمة. ويعطيك النطاق الموضع مباشرةً.
best = max(range(len(a)), key=lambda i: a[i])جمع جميع فهارس التطابق
هل تحتاج إلى كل موضع تظهر فيه قيمة؟ يجمع comprehension على enumerate جميع التطابقات في سطر واحد.
idx = [i for i, v in enumerate(a) if v == 7]ربط القيمة بالفهرس
لعمليات البحث المتكررة، أنشئ dict يربط القيمة بالفهرس مرة واحدة، لتحوّل كل بحث لاحق إلى عملية بزمن O(1).
where = {v: i for i, v in enumerate(a)}تحتاج القيم المكررة إلى عناية
يحتفظ dict الذي يربط القيمة بالفهرس بآخر ظهور فقط. استخدم قائمة لكل مفتاح، أو enumerate، عندما تكون التكرارات مهمة.
where = {}
for i, v in enumerate(a):
where.setdefault(v, []).append(i)التحويل بين أساسَي الفهرسة
انتبه إلى الأساس: إذا خزّنت الفهارس بدءًا من 0 وكان يجب طباعة فهارس بدءًا من 1، فأضف واحدًا. خلط الأساسين من أسباب الإجابات الخاطئة التي يصعب اكتشافها.
print(pos + 1) # 0-based to 1-basedتحقق سريع
تريد مواضع تبدأ من 1 أثناء التكرار. ماذا تكتب؟
مراجعة: تتبّع المواضع
يمكنك الآن العثور على الفهارس المفردة وفهارس القيم العظمى وجميع الفهارس، وربط القيم بمواضعها بأمان. يُعد enumerate أداة موثوقة لتتبّع المواضع. 🎯
تعلم Coding Interview Prep مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 90
- الدروس
- 360
الأسئلة الشائعة
هل درس «العثور على الفهرس لا القيمة فقط» مجاني؟
نعم — نص درس «العثور على الفهرس لا القيمة فقط» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Coding Interview Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Coding Interview Prep 4 دروس في المجموع.
ماذا ستتعلم في «العثور على الفهرس لا القيمة فقط»؟
تتبّع المواضع باستخدام enumerate تتمرن على Coding Interview Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Coding Interview Prep؟
لا تُشترط خبرة سابقة. Coding Interview Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «العثور على الفهرس لا القيمة فقط»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Coding Interview Prep هذا؟
نعم. كل درس في Coding Interview Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- القوائم والفهرسة والتقطيع في CP
- إنشاء المصفوفات بسرعة باستخدام الاستيعاب
- Min وMax وSum والمجاميع التراكمية
- العثور على الفهرس لا القيمة فقط