View Categories

4.3. دالة range()

1 دقيقة

جدول المحتويات

4.3. دالة range() #

إذا كنت بحاجة إلى تكرار سلسلة من الأرقام، فإن دالة range() المدمجة مفيدة. فهي تُنشئ متواليات حسابية:

>>> for i in range(5):
...     print(i)
...
0
1
2
3
4

لا تُعتبر نقطة النهاية المُعطاة جزءًا من السلسلة المُولّدة؛ تُولّد دالة range(10) عشر قيم، وهي المؤشرات القانونية لعناصر متسلسلة بطول 10. من الممكن جعل النطاق يبدأ من رقم آخر، أو تحديد زيادة مختلفة (حتى لو كانت سالبة؛ يُسمى هذا أحيانًا الخطوة “step”):

range(5, 10)
   5, 6, 7, 8, 9
range(0, 10, 3)
   0, 3, 6, 9
range(-10, -100, -30)
  -10, -40, -70

للتكرار على مؤشرات المتسلسلة، يمكنك دمج دالة range() مع len() كما يلي:

>>> a = ['Mary', 'had', 'a', 'little', 'lamb']
>>> for i in range(len(a)):
...     print(i, a[i])
...
0 Mary
1 had
2 a
3 little
4 lamb

في معظم هذه الحالات، من الملائم استخدام دالة enumerate()، انظر تقنيات التكرار.

يحدث أمر غريب إذا طبعتَ نطاقًا range فقط:

>>> print(range(10))
range(0, 10)

في كثير من الأحيان، يتصرف الكائن المُعاد بواسطة range() كما لو كان قائمة، ولكنه في الواقع ليس كذلك. إنه كائن يُرجع العناصر المتتالية من التسلسل المطلوب عند التكرار عليه، ولكنه لا يُدرج في القائمة فعليًا، مما يوفر مساحة.

نقول إن هذا الكائن قابل للتكرار، أي أنه مناسب كهدف للدوال والإنشاءات التي تتوقع شيئًا ما يُمكنها من خلاله الحصول على عناصر متتالية حتى استنفاد المخزون. لقد رأينا أن عبارة for هي بنية من هذا القبيل، بينما مثال على دالة تأخذ كائنًا قابلًا للتكرار هو sum():

>>> sum(range(4))  # 0 + 1 + 2 + 3
6

سنرى لاحقًا المزيد من الدوال التي تُرجع كائنات قابلة للتكرار وتأخذها كوسائط. وأخيرًا، ربما ترغب في معرفة كيفية الحصول على قائمة من نطاق. إليك الحل:

>>> list(range(4))
[0, 1, 2, 3]

في فصل هياكل البيانات Data Structures، سنناقش بمزيد من التفصيل دالة list().

error: Content is protected !!
Scroll to Top