الأعضاء أنفسهم أعطوا قناعين مختلفين في مساري مثالنا.
اكتب نوع الوسيط قبل تفسير False
isin تحول set إلى عنصر object واحد، لا إلى أعدادها. [1]
مجموعة Python تحمل أعضاء، لكن مرورها مباشرة إلى هذا الاستدعاء لا يعني أن المكتبة ستقرأ أعضاءها كما تقرأ قائمة أعداد. سؤالنا عن الوسيط الذي اختارناه، لا عن معنى الانتماء الرياضي وحده.
نفصل بين نتيجتين: قناع أعاده الاستدعاء، وقناع نتوقعه إذا بحثنا بين أعداد المجموعة نفسها. إذا اختلفا، نراجع طريقة تحويل الوسيط قبل الحكم بأن كل الأعداد غائبة.
الأمثلة مؤلفة، ونثبت الخيارات الافتراضية في isin. لا نغيّر خوارزمية kind أو نفترض التفرد أو نعكس النتيجة؛ نحصر الاختلاف بين S وlist(S).
المجموعة والقائمة على مدخل واحد
شغّلنا NumPy 2.3.5 على CPython 3.12.14. أنشأنا x=np.array([3,-2,7,3],dtype=np.int64) بالشكل (4,)، وأنشأنا S={3,7} ككائن set من أعداد Python الصحيحة.
نفذنا bad=np.isin(x,S). كانت النتيجة [False,False,False,False] من bool وبالشكل (4,). الأعداد 3 و7 لم تعط True في هذا المسار، رغم أنهما عضوا S في المثال.
أنشأنا L=list(S)، ثم good=np.isin(x,L). أعطت [True,False,True,True] من bool وبالشكل (4,). لا توجد -2 في الأعضاء المختارين؛ و3 الموجودة في الموضعين الأول والأخير حصلت على True في الموضعين.
نتتبع أربع إجابات مقابل أربع قيم، ولا نعيد قائمة القيم المختلفة بدلًا من القناع. الفرق الجديد هنا سبب الأجوبة في مسار المجموعة، لا تعريف القناع الذي تستعمله الدالة.
لفحص التحويل، أنشأنا O=np.array(S). كان شكلها () وحجمها size=1 ونوعها object. تحققنا أن O.item() is S تعطي True؛ الكائن الموجود هو المجموعة نفسها، وليس عددًا من أعضائها.
ثم أنشأنا V=np.array(L,dtype=np.int64). كان شكلها (2,) ونوعها int64. أعطى np.isin(x,V) القناع نفسه الذي أعطاه مسار L، فصار لدينا تحكم عددي صريح إضافة إلى القائمة.
لم نستخدم حجم المجموعة اثنين لوصف حجم O؛ نتيجة التحويل المختبرة تحمل كائنًا واحدًا بلا محاور. سجّلنا عدد أعضاء S وحجم O وشكل V كلًا على حدة.
الترتيب والفراغ في التحكمات
list تبني من عناصر كائن قابل للتكرار؛ وset لا تحفظ ترتيبًا موضعيًا. [2]
لا نثبت ترتيبًا عامًا لكتابة L الناتجة من مجموعة. في التشغيل، أخذنا ترتيب التكرار الذي أعاده list(S)، ثم بنينا قائمة أخرى بعكسه بواسطة list(reversed(L)).
أعادت isin مع القائمة المعكوسة القناع [True,False,True,True] نفسه. سبب فرق مسار S ليس اختيار 3 أولًا أو 7 أولًا في قائمتنا؛ كلا الترتيبين عرّض العددين للاختبار.
هذا تحكم لقيم المثال وامتداداته في الشبكة، وليس تصريحًا بأن ترتيب كل قائمة غير مهم في كل تطبيق. إذا كانت القائمة خطوات عمل أو قياسات مرتبة، فإن السؤال عن دلالتها يختلف عن اختبار الوجود الحالي.
للفراغ، أنشأنا set() على x نفسها. أعطت isin مع المجموعة الفارغة ومع list منها أربع قيم False. فحصنا أيضًا تحويل المجموعة الفارغة في تحكمنا؛ بقي كائن object واحدًا بالشكل ()، بينما القائمة العددية الصريحة كانت بلا عناصر بالشكل (0,).
اتفاق القناعين في حالة الفراغ لا يثبت تكافؤ طريقة التحويل في المجموعة غير الفارغة. لا توجد أهداف عددية أصلًا في هذا التحكم؛ لا يمكنه كشف فقد عرض العددين اللذين اختبرناهما سابقًا.
تحققنا من بقاء بايتات x ونوعها وشكلها، ومن بقاء أعضاء S خلال الاستدعاءات. لم نفحص الكتابة عبر المصفوفات الناتجة أو مشاركة الذاكرة أو أداء المسارات.

المرجع والنطاق
بنى مرجع Python جواب كل قيمة n بحلقة مساواة على الأعداد المستهدفة: any(n==v for v in targets). يتوقع True إذا وجد عددًا مساويًا، وFalse إذا لم يجد.
لا يستدعي المرجع isin أو منشئ مصفوفة أو اختبار عضوية من NumPy. يحتفظ بالقيم الأصلية للأهداف قبل تحويلها إلى set أو list، فيكون مستقلًا عن التحويل الذي نختبره.
للشبكة، اخترنا أطوال مدخل من 1 إلى 3، وكل موضع يختار من -2 وصفر و5. لدينا 3+9+27=39 متجهًا، ويظهر التكرار في بعضها.
أعددنا جميع المجموعات الجزئية الثماني من الأعداد الثلاثة، بما فيها المجموعة الفارغة. عدد الأزواج 39×8=312. كل متجه من int64، والأهداف كائن set من أعداد Python صحيحة.
لكل زوج سبعة فحوص: False كلها مع set ونوع القناع وشكله؛ وقيم قناع القائمة مقابل المرجع؛ ونوعه وشكله؛ واتفاق القائمة المعكوسة؛ وشكل تحويل set ونوعه وحجمه وهوية كائنه؛ والتحكم العددي الصريح من int64؛ وثبات المدخل والأعضاء.
أضفنا المثال الرئيسي وتحكم المجموعة الفارغة على المدخل الرباعي بسبعة فحوص لكل منهما، وثلاثة فحوص إضافية: القناعين المعلنين؛ وشكلي O وV؛ واتفاق القناعين الفارغين. الحساب (312+2)×7+3=2201، ومرت جميعها.
النطاق مدخلات int64 أحادية البعد وغير فارغة، وأهداف set من الأعداد الصحيحة، ومسارات القائمة والمعكوسة والمصفوفة العددية الصريحة، بالخيارات الافتراضية لـisin.
لم نفحص عناصر مدخل من object أو مجموعات مخصصة أو frozenset أو أنواعًا ورتبًا أخرى أو NaN أو خيارات kind وassume_unique وinvert أو الأداء والملكية والكتابة في النتائج.
احتفظ بنوع الوسيط مع القناع الذي أعاده. False في هذا المثال نتيجة لمسار تحويل محدد؛ لا تختزلها إلى حكم على وجود العدد في أعضاء المجموعة الأصلية.
| الوسيط | التحويل | القناع على x |
|---|---|---|
| S | object / () / size=1 | F F F F |
| list(S) | int64 صريح / (2,) | T F T T |
| قائمة معكوسة | الأعضاء أنفسهم | T F T T |
للتوسع: معنى القائمة وترتيبها.
المراجع
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
