• 0

كيف أحصل على مواقع مصفوفة تم فرزها في بايثون؟

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

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

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

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 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() فهذه الدالة تُرجع معاملات التي ستفرز المصفوفة أو القائمة.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن