الوحدة itertools‎ في بايثون

من موسوعة حسوب
< Python
مراجعة 01:10، 6 يونيو 2018 بواسطة عبد-الهادي-الديوري (نقاش | مساهمات) (إضافة الصّفحة)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث


تقّدم الوحدة itertools مجموعة من الأدوات المُساعدة على بناء مُكرّرات مُشابهة لتلك المتوفّرة في لغات مثل APL، وHaskell وSML. بُني كلّ منها بطريقة تُناسب لغة بايثون.

الأدوات المُتوفّرة سريعة وتستخدم الذّاكرة بشكل فعّال، وهي مُفيدة سواء لذاتها أو عبر دمج بعضها ببعض. وعند دمجها مع بعض، تُشكّل "جبرَ مُكرّرات” يُمكن استعماله لإنشاء أدوات أكثر تخصّصًا بشكل فعّال باستخدام بايثون فقط دون الحاجة إلى أيّة لغة برمجيّة أخرى.

تُوفّر لغة SML مثلًا الدّالة tabulate‎(f)‎ التي تُنتج السّلسلة ‎f(0)‎,‎ ‎f(1)‎,‎ ‎...‎‎. يُمكن الحصول على نفس النّتيجة في بايثون عبر دمج الدّالة map‎()‎ والدّالة count‎()‎ على شكل ‎map‎(‎f‎, ‎count‎(‎)‎)‎.

تعمل هذه الأدوات والدّوال المبنيّة المُكافئة لها جيّدًا مع الدّوال السّريعة الموجودة في الوحدة operator أيضًا. فمثلًا يُمكن ربط عامل الضّرب (multiplication operator) بين متّجهتين () لتشكيل جداء سُلميّ (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()‎

مكررات دامجة

المُكرّرات الدّامجة تدمجُ بين التّسلسلات لإنشاء تسلسلات أخرى.

itertools.product()‎

itertools.permutations()‎

itertools.combinations()‎

itertools.combinations_with_replacement()‎

مصادر