itertools: المكرّرات اللانهائية والمحدودة
استخدم count وcycle وislice وchain وzip_longest
itertools: المكرّرات اللانهائية والمحدودة درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.
ما هي itertools؟
itertools وحدة من المكتبة القياسية توفّر لبنات بناء لمكررات فعّالة في استهلاك الذاكرة. تُعيد جميع دوالها مكررات، وليس قوائم.
import itertools
# count: infinite counter
for i in itertools.islice(itertools.count(10, 2), 5):
print(i, end=" ") # 10 12 14 16 18count()
ينتج count(start, step) متتالية حسابية لا نهائية. احرص دائمًا على استخدامه مع islice أو شرط إيقاف.
import itertools
for n in itertools.count(1, 10):
if n > 40:
break
print(n, end=" ") # 1 11 21 31 41cycle()
يكرر cycle(iterable) الكائن القابل للتكرار إلى ما لا نهاية.
import itertools
colors = itertools.cycle(["red","green","blue"])
for _ in range(7):
print(next(colors), end=" ")
# red green blue red green blue redrepeat()
يُنتج repeat(value, times) القيمة نفسها times مرة، أو إلى ما لا نهاية إذا لم تُحدَّد.
import itertools
print(list(itertools.repeat(42, 4))) # [42, 42, 42, 42]
print(list(map(pow, range(5), itertools.repeat(2))))
# [0, 1, 4, 9, 16]islice()
يقتطع islice(it, stop) أو islice(it, start, stop, step) مكررًا دون تحويله إلى عناصر فعلية في الذاكرة.
import itertools
result = list(itertools.islice(range(100), 2, 10, 2))
print(result) # [2, 4, 6, 8]chain()
يربط chain(*iterables) عدة كائنات قابلة للتكرار بالتتابع في مكرر واحد.
import itertools
result = list(itertools.chain([1,2], [3,4], [5]))
print(result) # [1, 2, 3, 4, 5]
# chain.from_iterable for a list of iterables:
nested = [[1,2],[3,4]]
print(list(itertools.chain.from_iterable(nested)))zip_longest()
يُجري zip_longest عملية zip على كائنات قابلة للتكرار ذات أطوال مختلفة، ويملأ القيم المفقودة باستخدام fillvalue.
import itertools
a = [1, 2, 3]
b = ["a", "b"]
print(list(itertools.zip_longest(a, b, fillvalue=0)))
# [(1, "a"), (2, "b"), (3, 0)]dropwhile() وtakewhile()
يُنتج takewhile(pred, it) العناصر ما دامت دالة الاختبار صحيحة. أما dropwhile فيفعل العكس.
import itertools
nums = [1, 3, 5, 6, 7, 9]
print(list(itertools.takewhile(lambda x: x % 2, nums)))
# [1, 3, 5]
print(list(itertools.dropwhile(lambda x: x % 2, nums)))
# [6, 7, 9]filterfalse()
يُنتج filterfalse(pred, it) العناصر التي تكون فيها دالة الاختبار False — أي مكمل filter().
import itertools
evens = list(itertools.filterfalse(lambda x: x%2, range(10)))
print(evens) # [0, 2, 4, 6, 8]starmap()
يطبّق starmap(func, iterable) دالةً على كل صف من الوسائط ضمن كائن قابل للتكرار.
import itertools, operator
pairs = [(2,3),(4,5),(1,10)]
result = list(itertools.starmap(operator.mul, pairs))
print(result) # [6, 20, 10]groupby()
تجمع groupby(it, key) العناصر المتتالية التي لها قيمة المفتاح نفسها. رتّب الكائن القابل للتكرار أولًا للحصول على تجميع صحيح.
import itertools
data = sorted([("a",1),("b",2),("a",3)], key=lambda x:x[0])
for key, group in itertools.groupby(data, key=lambda x:x[0]):
print(key, list(group))تحقق سريع
ماذا ينتج itertools.chain([1,2], [3,4])؟
مراجعة
توفر itertools مكررات لا نهائية (count وcycle وrepeat)، واقتطاعًا (islice)، ودمجًا (chain وzip_longest)، وتصفيةً (takewhile وdropwhile وfilterfalse). وجميعها كسولة وفعّالة في استهلاك الذاكرة.
الأسئلة الشائعة
هل درس «itertools: المكرّرات اللانهائية والمحدودة» مجاني؟
نعم — نص درس «itertools: المكرّرات اللانهائية والمحدودة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.
ماذا ستتعلم في «itertools: المكرّرات اللانهائية والمحدودة»؟
استخدم count وcycle وislice وchain وzip_longest تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟
لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «itertools: المكرّرات اللانهائية والمحدودة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟
نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- itertools: المكرّرات اللانهائية والمحدودة
- itertools: التوافقيات
- functools: partial وreduce
- functools: lru_cache وcached_property