ضغط قوائم ذات أحجام مختلفة باستخدام الوظائف المضمنة
بينما تكون وظيفة الضغط المدمجة غير قادرة على تكرار القائمة الأقصر عند دمج قائمتين قوائم ذات أحجام مختلفة، يمكنك الاستفادة من وظيفة 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)
في هذا المثال:
النتيجة:
سوف تحتوي قائمة 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