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

كيفية ضغط قوائم ذات أحجام مختلفة باستخدام "itertools.cycle" في بايثون؟

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

How to Zip Differently Sized Lists Using `itertools.cycle` in Python?

ضغط قوائم ذات أحجام مختلفة باستخدام الوظائف المضمنة

بينما تكون وظيفة الضغط المدمجة غير قادرة على تكرار القائمة الأقصر عند دمج قائمتين قوائم ذات أحجام مختلفة، يمكنك الاستفادة من وظيفة itertools.cycle لتحقيق هذه النتيجة.

دورة من حزمة Python تقوم itertools بإنشاء المُكرِّر الذي يُرجع بشكل متكرر عناصر من كائن قابل للتكرار، حتى بعد استنفاده. من خلال الجمع بين الرمز البريدي والدورة، من الممكن التعامل مع تناقض الحجم بين القوائم والتأكد من تكرار القائمة الأطول حسب الضرورة.

مثال:

A = [1, 2, 3, 4, 5, 6, 7, 8, 9]
B = ["A", "B", "C"]

# Use itertools.cycle to repeat the shorter list
from itertools import cycle
zip_list = zip(A, cycle(B)) if len(A) > len(B) else zip(cycle(A), B)

في هذا المثال:

  • إذا كان len(A) > len(B) يتحقق مما إذا كانت القائمة الأولى (A) أطول من القائمة الثانية (B).
  • إذا كان الأمر كذلك، فإنه يستخدم الرمز البريدي لدمج A مع مكرر دورة B، بشكل فعال تكرار B خلال النتيجة المدمجة.
  • إذا كان B أطول، فإنه يقلب الترتيب ويدور A بدلاً من ذلك.

النتيجة:

سوف تحتوي قائمة zip_list على المجموعات التالية ككائن منشئ:

[(1, 'A'), (2, 'B'), (3, 'C'), (4, 'A'), (5, 'B'), (6, 'C'), (7, 'A'), (8, 'B'), (9, 'C')]

كيف يعمل:

itertools.cycle ينشئ نسخة من العنصر القابل للتكرار (في هذه الحالة، B) ويعيد عناصره بشكل متكرر. عندما يتكرر الرمز البريدي عبر A، فإنه يقرن كل عنصر بالعنصر التالي المتاح من مكرر التدوير.

إذا كان A أقصر من B، تبدأ العملية من بداية B بمجرد استنفاد مكرره. على العكس من ذلك، إذا كانت A أطول، فإن المكرر B يدور بشكل مستمر لملء بقية القائمة المدمجة.

أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3