تقنية

takewhile وdropwhile في بايثون: أين يذهب أول عنصر يرفضه الشرط؟

takewhile تعيد 2 و5؛ التالي من المدخل 3، بعد استهلاك 8.
قبل الرفض.

بعد استهلاك takewhile حتى التوقف، أول قيمة يرفضها الشرط تُستهلك ولا تُعاد؛ dropwhile تبدأ ناتجها بها. [1]

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

تستهلكها takewhile؛ وتظهر في ناتج dropwhile. [1]

  • بعد استهلاك takewhile حتى التوقف، أول قيمة يرفضها الشرط تُستهلك ولا تُعاد؛ dropwhile تبدأ ناتجها بها. [1]
  • على CPython 3.12.14، data=[2,5,8,3,11]، والشرط n<6. [1]
  • takewhile تعطي [2,5]؛ تتوقف عند رفض 8. [1]
  • next(source) تعطي 3؛ القيمة 8 استُهلكت ولم تُعد إلى المكرر. [1]
  • تحكم ببداية جديدة: dropwhile تعطي [8,3,11]؛ تبقى 3 رغم أنها أقل من 6؛ الاختبار ينتهي عند أول رفض. [1]

عند أول رفض

بعد استهلاك takewhile حتى التوقف، أول قيمة يرفضها الشرط تُستهلك ولا تُعاد؛ dropwhile تبدأ ناتجها بها. [1]

المدخل والشرط

على CPython 3.12.14، data=[2,5,8,3,11]، والشرط n<6. [1]

قبل الرفض

takewhile تعطي [2,5]؛ تتوقف عند رفض 8. [1]

from itertools import takewhile,dropwhile data=[2,5,8,3,11] source=iter(data) print(list(takewhile(lambda n:n<6,source))) print(next(source)) [1]

dropwhile تعيد 8 و3 و11.
من الرفض.

المكرر والباقي

next(source) تعطي 3؛ القيمة 8 استُهلكت ولم تُعد إلى المكرر. [1]

print(list(dropwhile(lambda n:n<6,iter(data)))) [1]

تحكم ببداية جديدة: dropwhile تعطي [8,3,11]؛ تبقى 3 رغم أنها أقل من 6؛ الاختبار ينتهي عند أول رفض. [1]

المراجع

  1. Python takewhile/dropwhile

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

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