الوحدة itertools
في بايثون
تقّدم الوحدة itertools
مجموعة من الأدوات المُساعدة على بناء مُكرّرات مُشابهة لتلك المتوفّرة في لغات مثل APL، وHaskell وSML. بُني كلّ منها بطريقة تُناسب لغة بايثون.
الأدوات المُتوفّرة سريعة وتستخدم الذّاكرة بشكل فعّال، وهي مُفيدة سواء بمُفردها أو عبر دمج بعضها ببعض. وعند دمجها مع بعض، تُشكّل "جبرَ مُكرّرات” تُعدّ وسيلة يُمكن استعمالها لإنشاء أدوات أكثر تخصّصًا بشكل فعّال باستخدام بايثون فقط دون الحاجة إلى أيّة لغة برمجيّة أخرى.
تُوفّر لغة SML مثلًا الدّالة tabulate(f)
التي تُنتج السّلسلة f(0), f(1), ...
. يُمكن الحصول على نفس النّتيجة في بايثون عبر دمج الدّالة map()
والدّالة count()
على شكل map(f, count())
.
تعمل هذه الأدوات والدّوال المبنيّة المُكافئة لها جيّدًا مع الدّوال السّريعة الموجودة في الوحدة operator
أيضًا. فمثلًا يُمكن ربط عامل الضّرب (multiplication operator) بين متّجهتين (vectors) لتشكيل جداء سُلميّ (dot-product) فعّال:
sum(map(operator.mul, vector1, vector2))
مكررات لامتناهية
itertools.count()
itertools.cycle()
itertools.repeat()
مكررات تنتهي عند أقصر تسلسل
itertools.accumulate()
itertools.chain()
itertools.chain.from_iterable()
itertools.compress()
itertools.dropwhile()
itertools.filterfalse()
itertools.groupby()
itertools.islice()
itertools.starmap()
itertools.starmap()
itertools.tee()
itertools.zip_longest()
مكررات دامجة
المُكرّرات الدّامجة تدمجُ بين التّسلسلات لإنشاء تسلسلات أخرى.