اذهب إلى المحتوى

السؤال

نشر

أملك المصفوفة التالية:

myList = [1, 2, 3, 100, 5]

وإذا قمت بعملية فرز فسأحصل على [1, 2, 3, 5, 100]. أريد الحصول على مواقع العناصر من المصفوفة الأصلية في ترتيب الفرز مثل [0, 1, 2, 4, 3].
فهل توجد دالة معينة في بايثون لفعل ذلك؟

Recommended Posts

  • 0
نشر

يوجد عدة طرق في لغة بايثون لفعل ذلك، فيمكنك على سبيل المثال فعل ذلك عن طريق استخدام سطر واحد فقط يحتوي على مجموعة من الدوال للفرز والحساب مثل sorted و range و len بالإضافة إلى lambda كما في المثال التالي:

In [15]: myList = [1, 2, 3, 100, 5]

In [16]: sorted(range(len(myList)),key=lambda x:myList[x])
Out[16]: [0, 1, 2, 4, 3]

أو يمكنك الاستغناء عن lambda واستبدالها بـ __getitem__ لتصبح الشيفرة البرمجية النهائية كالتالي:

 sorted(range(len(myList)),key=myList.__getitem__)

وإذا كنت تستخدم numpy() فيمكنك فعل ذلك ببساطة عن طريق استخدام دالة argsort() فهذه الدالة تُرجع معاملات التي ستفرز المصفوفة أو القائمة.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...