الفرق بين المراجعتين لصفحة: «Python/itertools»

من موسوعة حسوب
سطر 15: سطر 15:


=== <code>[[Python/itertools/count|itertools.count()‎]]</code> ===
=== <code>[[Python/itertools/count|itertools.count()‎]]</code> ===
تعيد مُكرّرًا يُعيد قيمًا مُتساويّة الفرق بدءًا من قيمةٍ بدئيّة.
=== <code>[[Python/itertools/cycle|itertools.cycle()‎]]</code> ===
=== <code>[[Python/itertools/cycle|itertools.cycle()‎]]</code> ===
=== <code>[[Python/itertools/repeat|itertools.repeat()‎]]</code> ===
=== <code>[[Python/itertools/repeat|itertools.repeat()‎]]</code> ===

مراجعة 17:44، 18 يونيو 2018


تقّدم الوحدة 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()‎

مكررات دامجة

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

itertools.product()‎

itertools.permutations()‎

itertools.combinations()‎

itertools.combinations_with_replacement()‎

مصادر