"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > اكتشاف أدوات itertools

اكتشاف أدوات itertools

تم النشر بتاريخ 2024-11-07
تصفح:712

Descubriendo itertools

Itertools هي واحدة من مكتبات بايثون الأكثر إثارة للاهتمام. يحتوي على سلسلة من الوظائف المستوحاة من اللغات الوظيفية المستخدمة للعمل مع التكرارات.

سأذكر في هذا المقال بعضًا من أكثر الأشياء التي لفتت انتباهي والتي تستحق أن تضعها في الاعتبار حتى لا تعيد اختراع العجلة في كل مرة.

عدد

لقد قمت بتنفيذ عدد لا نهائي من المرات (حسنًا، سينتهي
صراحة في مرحلة ما مع استراحة) باستخدام حلقة True while. تقدم لنا itertools بديلاً أفضل:

    from itertools import count

    for i in count(start=2, step=2):
        if i > 10:
            break
        print(i)

    2
    4
    6
    8
    10

كما يتبين في المثال، لولا الفاصل، لكان العد سيرجع أرقامًا لا حصر لها. الكود أعلاه يعادل تقريبًا:

    i = 2

    while True:
        if i > 10:
            break

        print(i)
        i  = 2

    2
    4
    6
    8
    10

دفعة واحدة

وظيفة للقيام بشيء شائع جدًا: الحصول على البيانات من دفق على دفعات بحجم n. دعونا نلقي نظرة على مثال:

from itertools import batched

    sequence = [1, 2, 3, 4, 5, 6, 7]

    for batch in batched(sequence, 2):  # lotes de tamaño 2
        print(batch)
    (1, 2)
    (3, 4)
    (5, 6)
    (7,)

تجدر الإشارة إلى أن الدفعة الأخيرة قد يكون حجمها أقل من أو يساوي n كما في هذه الحالة. مفيد جدًا، ألا تعتقد ذلك؟

الزوجي

وظيفة أخرى بسيطة ومفيدة. بالنظر إلى التسلسل (في الواقع، بالنظر إلى المكرر)، فإنه يعطينا عناصره في أزواج.

دعونا نرى ذلك بشكل أفضل بمثال:

from itertools import pairwise

    sequence = [1, 2, 3, 4, 5, 6, 7]

    for a, b in pairwise(sequence):
        print(a, b)
    1 2
    2 3
    3 4
    4 5
    5 6
    6 7

عدد الأزواج أقل بواحد من حجم تسلسل الإدخال.

منتج

أخيرًا، بالنسبة لهذا الإدخال القصير، أريد أن أتحدث عن المنتج، أ
تنفيذ المنتج الديكارتي.

مفيد لاستبدال حلقات متداخلة من خلال تدفقي بيانات:

from itertools import product

    A = [1, 2, 3]
    B = [5, 6, 7]

    for a, b in product(A, B):
        print(a, b)
   1 5
    1 6
    1 7
    2 5
    2 6
    2 7
    3 5
    3 6
    3 7

يتلقى معلمة تسمح لنا بعمل المنتج الديكارتي لـ
التسلسل مع نفسه:

   from itertools import product

    A = [1, 2, 3]

    for a1, a2, a3 in product(A, repeat=3):
        print(a1, a2, a3)
    1 1 1
    1 1 2
    1 1 3
    1 2 1
    1 2 2
    1 2 3
    1 3 1
    1 3 2
    1 3 3
    2 1 1
    2 1 2
    2 1 3
    2 2 1
    2 2 2
    2 2 3
    2 3 1
    2 3 2
    2 3 3
    3 1 1
    3 1 2
    3 1 3
    3 2 1
    3 2 2
    3 2 3
    3 3 1
    3 3 2
    3 3 3

في مقال مستقبلي، سأذكر وظائف أخرى لهذه الوحدة المفيدة
مكتبة بايثون القياسية. آمل أن يكون مفيدًا لك.

بيان الافراج تم نشر هذه المقالة على: https://dev.to/johnnatan_sandovalcardon/descubriendo-itertools-507j?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3