تقنية

zip في بايثون: الخطأ قد يأتي بعد زوجين

زوجان بحسب الموضع و12 دون مقابل
الأقصر يحدد الزوجين. [1] [2]

zip يقرن القيم بحسب مواضعها. [1] [2]

الخلاصة السريعة

strict=True يكشف اختلاف الطولين عند الاستهلاك، لا عند الإنشاء. [1] [2]

  • العادي يتوقف عند الأقصر؛ لا يملأ العنصر الزائد. [1] [2]
  • لمدخلينا، الزوجان (4,1) و(8,2)؛ القيمة 12 بلا زوج. [1] [2]
  • مع strict، الطلب الثالث يرفع ValueError بعد إخراج الزوجين؛ والخطأ لا يمحوهما. [1] [2]
  • إذا تساوى الطولان ينتهي طبيعيًا، حتى عند فراغ القائمتين. [1] [2]
  • قوائم منتهية في 3.12.14؛ التوقف المبكر قد يخفي الخطأ. [1] [2]

المثال

a=[4,8,12]
b=[1,2]
z=zip(a,b,strict=True)
print(next(z))
print(next(z))
try:
    next(z)
except ValueError:
    print("mismatch")

[1] [2]

يطبع (4, 1) ثم (8, 2) ثم mismatch. إنشاء z لم يرفع الخطأ. [1] [2]

المقارنة

list(zip(a,b)) يعيد [(4,1),(8,2)] دون خطأ. العادي لا يقترن فيه 12 بشيء. [1] [2]

الاستهلاك

إذا توقفت بعد الزوجين، لم تصل إلى طلب اكتشاف الاختلاف؛ strict ليس فحصًا مسبقًا للقائمتين. الخطأ لا يمحو المخرجات السابقة. [1] [2]

طلبان يخرجان زوجين والثالث يكشف الاختلاف
strict يكشف الخطأ أثناء الاستهلاك. [1] [2]

النطاق

قائمتان منتهيتان طازجتان في 3.12.14. تساوي الطولين يسمح بنهاية طبيعية. [1] [2]

المراجع

  1. Python: zip، الاقتران والإنهاء
  2. PEP 618: strict ووقت الخطأ
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

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