• 0

لماذا لا تتضمن دالة range(start, end) النهاية في بايثون؟

هذا السؤال حيرني منذ بدأت تعلم لغة بايثون، فلو نفذت هذا السطر:

>>> range(1,11)

فسيرجع لي القائمة التالية؟

[1,2,3,4,5,6,7,8,9,10]

فلماذا لا يرجع لي المجال بين 1 إلى11 بدلا من 1 إلى 10؟ لماذا دائما النهاية – 1؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

هنالك عدّة أسباب لجعل النهاية في دالة المدى أقل بواحد من المجال الموجود، وأهمها شيوع كتابة range(0, 10) والتي سترجع القائمة التالية [0,1,2,3,4,5,6,7,8,9] الحاوية على 10 عناصر وهي توافق len(range(0, 10)).
تذكّر أن المبرمجين يفضلون استخدام الفهرسة التي يكون فيها أول عنصر هو 0.
أي أن إذا كان المعامل الأول صفر فالمعامل الثاني سيكون طول هذه القائمة.
في حالة ما أردت أن يكون المجال بين 1 وأي رقم تريده (يكون ضمن المجال) فيمكنك في هذه الحالة إنشاء دالتك الخاصة كما في المثال التالي:

>>> range1 = lambda start, end: range(start, end+1)
>>> range1(1, 10)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن