في تجربتنا، القراءة من المكرر الأصلي بعد tee تجعل الفرعين يتجاوزان قيمة؛ نختار القراءة من الفرعين بعد التقسيم. [1]
الخلاصة السريعة
نتجنب ذلك هنا كي يحتفظ الفرعان بالقيم. [1]
- في تجربتنا، القراءة من المكرر الأصلي بعد tee تجعل الفرعين يتجاوزان قيمة؛ نختار القراءة من الفرعين بعد التقسيم. [1]
- على CPython 3.12.14، source=iter([2,5,8,11])؛ tee تعيد فرعين left وright. [1]
- next(left) تعطي 2؛ بعدها next(source) تعطي 5، ثم next(left) تعطي 8. [1]
- next(right) تعطي 2 ثم 8؛ الباقي [11] لكل فرع؛ القيمة 5 قرأها الأصل وحده. [1]
- تحكم بمكرر جديد: استعمال الفرعين وحدهما يعطي [2,5,8,11] لكل منهما، حتى عند استهلاك الأول كاملًا قبل الثاني. [1]
القراءة بعد التقسيم
في تجربتنا، القراءة من المكرر الأصلي بعد tee تجعل الفرعين يتجاوزان قيمة؛ نختار القراءة من الفرعين بعد التقسيم. [1]
الأصل والفرعان
على CPython 3.12.14، source=iter([2,5,8,11])؛ tee تعيد فرعين left وright. [1]
طلب من الأصل
next(left) تعطي 2؛ بعدها next(source) تعطي 5، ثم next(left) تعطي 8. [1]
from itertools import tee source=iter([2,5,8,11]) left,right=tee(source) print(next(left)) print(next(source)) print(next(left)) print(next(right),next(right)) print(list(left),list(right)) [1]
![التحكم: كل فرع يعطي [2,5,8,11].](https://images.bahralolom.com/assets/local-2000-20261012/BA-1486/python-tee-source-values.png)
ما يصل إلى الفرعين
next(right) تعطي 2 ثم 8؛ الباقي [11] لكل فرع؛ القيمة 5 قرأها الأصل وحده. [1]
first,second=tee(iter([2,5,8,11])) print(list(first)) print(list(second)) [1]
تحكم بمكرر جديد: استعمال الفرعين وحدهما يعطي [2,5,8,11] لكل منهما، حتى عند استهلاك الأول كاملًا قبل الثاني. [1]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
