تقنية

chain.from_iterable في بايثون: هل تفك كل مستويات التداخل؟

chain.from_iterable: القائمة [5,8] باقية في الناتج.
قائمة باقية.

chain.from_iterable تصل عناصر المدخلات المتتابعة؛ لا تنزل تلقائيًا إلى قوائم داخل عناصرها. [1]

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

لا؛ القائمة [5,8] تبقى عنصرًا واحدًا في مثالنا. [1]

  • chain.from_iterable تصل عناصر المدخلات المتتابعة؛ لا تنزل تلقائيًا إلى قوائم داخل عناصرها. [1]
  • كل قائمة داخلية تمرر عناصرها كما هي في هذا المثال؛ لا يوجد اجتياز عودي للأعمق. [1]
  • على CPython 3.12.14، nested=[[2,[5,8]],[11]] تضم قائمة داخل قائمة داخلية. [1]
  • الناتج [2,[5,8],11]؛ العنصر الثاني قائمة قيمتها [5,8]، وليس عددين منفصلين. [1]
  • تحكم جديد: [[2,5],[8,11]] يعطي [2,5,8,11]؛ المدخلان لم يتغيرا أثناء الاختبار، دون استنتاج ضمان نسخ عميق. [1]

وصل العناصر

chain.from_iterable تصل عناصر المدخلات المتتابعة؛ لا تنزل تلقائيًا إلى قوائم داخل عناصرها. [1]

عمق الاجتياز

كل قائمة داخلية تمرر عناصرها كما هي في هذا المثال؛ لا يوجد اجتياز عودي للأعمق. [1]

قائمة أعمق

على CPython 3.12.14، nested=[[2,[5,8]],[11]] تضم قائمة داخل قائمة داخلية. [1]

from itertools import chain nested=[[2,[5,8]],[11]] out=list(chain.from_iterable(nested)) print(out,type(out[1]).__name__) [1]

تحكم بقائمتين مسطحتين يعطي [2,5,8,11].
أعداد منفصلة.

الناتج والتحكم

الناتج [2,[5,8],11]؛ العنصر الثاني قائمة قيمتها [5,8]، وليس عددين منفصلين. [1]

flat_start=[[2,5],[8,11]] print(list(chain.from_iterable(flat_start))) [1]

تحكم جديد: [[2,5],[8,11]] يعطي [2,5,8,11]؛ المدخلان لم يتغيرا أثناء الاختبار، دون استنتاج ضمان نسخ عميق. [1]

المراجع

  1. Python chain.from_iterable

للتوسع: لغات البرمجة.

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